0

私はアンドロイドアプリを書いています。SQLite データベースを作成し、作成時にデータを入力する必要があります。だから私はそれを onCreate() 関数に取り込もうとしています。ただし、データベースにデータを挿入するには、db.getWritableDatabase() を使用する必要があります。ただし、データベースの作成中にデータベースを呼び出すことを意味するため、データベースの onCreate() 関数内でこれを行うことはできません (エラーがスローされます)。では、データベースの onCreate() 関数内で getWritableDatabase() を使用するにはどうすればよいでしょうか?

4

1 に答える 1

5

ただし、データベースにデータを挿入するには、db.getWritableDatabase() を使用する必要があります。

いいえ、SQLiteDatabaseインスタンスが必要です。onCreate()あなたのメソッドに1つ提供されていますSQLiteOpenHelper-- それを使用してください。

たとえば、このサンプル プロジェクトには、onCreate()次のような があります。

  @Override
  public void onCreate(SQLiteDatabase db) {
    try {
      db.beginTransaction();
      db.execSQL("CREATE TABLE constants (_id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT, value REAL);");

      ContentValues cv=new ContentValues();

      cv.put(TITLE, "Gravity, Death Star I");
      cv.put(VALUE, SensorManager.GRAVITY_DEATH_STAR_I);
      db.insert("constants", TITLE, cv);

      cv.put(TITLE, "Gravity, Earth");
      cv.put(VALUE, SensorManager.GRAVITY_EARTH);
      db.insert("constants", TITLE, cv);

      // several more inserts here

      cv.put(TITLE, "Gravity, Venus");
      cv.put(VALUE, SensorManager.GRAVITY_VENUS);
      db.insert("constants", TITLE, cv);

      db.setTransactionSuccessful();
    }
    finally {
      db.endTransaction();
    }
  }
于 2013-03-27T15:58:06.007 に答える