java - 如何在SQLite数据库的onCreate()函数中使用getWritableDatabase? (安卓)

标签 java android sqlite

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

最佳答案

However, to insert data in the database, one needs to use db.getWritableDatabase().

不,您需要一个 SQLiteDatabase 实例。其中一个提供给 SQLiteOpenHelperonCreate() 方法 - 使用该方法。

例如,在this sample project中,我有一个 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();
    }
  }

关于java - 如何在SQLite数据库的onCreate()函数中使用getWritableDatabase? (安卓),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15663340/

相关文章:

java - 从 URL 获取 JSON 数据并保存到变量以显示

java - 创建无限短生命周期线程

java - NullPointerExceptions 仅在某些 Samsung Galaxy 设备上出现?

android - react native android release apk无法从互联网接收数据

服务与 Activity 不同的Android静态变量

android - 数据库未关闭

java - 有没有办法在java swing中显示没有JLabel或JTextField的文本?

java - Docker 和 Java 9 模块

android - 使用SQLiteOpenHelper在数据库中创建表时,应用程序崩溃

sqlite - 在 flutter 中使用 sqlflite 删除数据库似乎不起作用