我正在编写一个 Android 应用程序。我需要创建一个 SQLite 数据库并在创建时填充它。所以我试图将它填充到它的 onCreate() 函数中。然而,要向数据库中插入数据,需要使用 db.getWritableDatabase()。但不能在数据库的 onCreate() 函数内执行此操作,因为这意味着在创建数据库期间调用数据库(它会引发错误)。那么如何在数据库的onCreate()函数中使用getWritableDatabase()呢?
最佳答案
However, to insert data in the database, one needs to use db.getWritableDatabase().
不,您需要一个 SQLiteDatabase
实例。其中一个提供给 SQLiteOpenHelper
的 onCreate()
方法 - 使用该方法。
例如,在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/