2017-08-11 21 views
0

私はアンドロイドで簡単なデータベースを作成しようとしていますが、データベースは作成されず、理由もわかりません。私は多くの解決策を読んだが、何も役に立たなかったAndroidデータベースのSQLiteデータベースが作成されません

これはSQLiteOpenHelper拡張クラスである

public class TodoDB extends SQLiteOpenHelper { 
    public static final int DATABASE_VERSION = 1; 
    public static final String DATABASE_NAME = "todo.db"; 

    public TodoDB(android.content.Context context){ 
     super(context, DATABASE_NAME, null, DATABASE_VERSION); 
    } 
    @Override 
    public void onCreate(SQLiteDatabase sqLiteDatabase) { 
     String query = "CREATE TABLE "+ TaskSchema.TaskColumns.TABLE_NAME + "(" + 
       TaskSchema.TaskColumns.ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + 
       TaskSchema.TaskColumns.TITLE + " TEXT NOT NULL, " + 
       TaskSchema.TaskColumns.INFORMATION + " TEXT NOT NULL, " + 
       TaskSchema.TaskColumns.DATE + " TEXT NOT NULL " + 
       ");"; 
     sqLiteDatabase.execSQL(query); 
    } 

    @Override 
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) { 

    } 

    public void addTask() 
    { 
     ContentValues values = new ContentValues(); 
     values.put(TaskSchema.TaskColumns.TITLE, "l"); 
     values.put(TaskSchema.TaskColumns.INFORMATION, "temporal"); 
     values.put(TaskSchema.TaskColumns.DATE,"20-8-16"); 
     this.getWritableDatabase().insert(TaskSchema.TaskColumns.TABLE_NAME,null,values); 
    } 

    public String getTask() 
    { 
     String args[] = {"l"}; 
     String columns[] = {TaskSchema.TaskColumns.TITLE}; 
     Cursor c = this.getReadableDatabase().query(TaskSchema.TaskColumns.TABLE_NAME,columns, TaskSchema.TaskColumns.TITLE + " LIKE ?",args,null,null,null); 
     String result = c.getString(c.getColumnIndex(TaskSchema.TaskColumns.TITLE)); 
     return result; 
    } 

} 

これは

public class MainActivity extends AppCompatActivity { 

    Button addButton; 
    Button deleteButton; 
    TodoDB db; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     addButton = (Button)findViewById(R.id.addButton); 
     TodoDB db = new TodoDB(this); 
     db.addTask(); 
     String test = db.getTask(); 
     Toast.makeText(this, test,Toast.LENGTH_SHORT); 
    } 
} 

嘆願を助ける活動クラスです。

追加情報:Androidのモニターを使用してデータベースを検索しましたが、仮想デバイスには存在しませんでした。携帯電話でアプリを実行しました。データベースを探していても存在しません。私がアプリを閉じるクエリをしようとすると。

+0

データベースが作成されていないことをどのように知っていますか? – lelloman

+0

クエリの最後にセミコロン(;)を追加してみます。 クエリが今のようにする必要があります: 文字列のクエリ= "CREATE TABLE "を+ TaskSchema.TaskColumns.TABLE_NAME + "(" + TaskSchema.TaskColumns.ID +" INTEGER PRIMARY KEY AUTOINCREMENT、" + TaskSchema.TaskColumns.TITLE + "TEXT + TaskSchema.TaskColumns.INFORMATION + "TEXT NOT NULL" + TaskSchema.TaskColumns.DATE + "TEXT NOT NULL" + ");"; –

+0

@lelloman私はデータベースを見つけるためにAndroidモニターを使用しましたが、仮想デバイスにはありません。私は携帯電話でアプリケーションを実行しています。データベースを探しているときには存在しません。私がアプリを閉じるクエリをしようとすると。 –

答えて

-1

私は以前に何をしたのか分かりません。このテーブルを作成する前に他のテーブルを作成しましたか?はいの場合、SQLiteのonCreate()メソッドは、それを実装するクラスを初めて呼び出すときにのみ呼び出されます。アプリを削除してもう一度インストールしてみてください。または

+0

同じであり、決してデータベースを作成しないでください。 –

1
TodoDB db = new TodoDB(this); 

データベースファイルを作成しませんSQLiteOpenHelperをインスタンス化する前に、あなたがやっていることの他のいくつかの詳細を与えます。データベースファイルを作成するには、getWritableDatabase()またはgetReadableDatabase()に電話する必要があります。例:

TodoDB openHelper = new TodoDB(this); 
SQLiteDatabase db = openHelper.getWritableDatabase(); 
+0

私はそれを置く必要がありますか? –

+0

例を使って答えを更新しました – laalto

関連する問題