0

我正在编写一个安卓应用程序。我需要创建一个 SQLite 数据库并在创建时填充它。所以我试图将它填充到它的 onCreate() 函数中。但是,要在数据库中插入数据,需要使用 db.getWritableDatabase()。但是不能在数据库的 onCreate() 函数中执行此操作,因为这意味着在创建数据库期间调用数据库(它会引发错误)。那么如何在数据库的 onCreate() 函数中使用 getWritableDatabase() 呢?

4

1 回答 1

5

但是,要在数据库中插入数据,需要使用 db.getWritableDatabase()。

不,你需要一个SQLiteDatabase实例。一种是提供给onCreate()你的方法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 回答