我正在写一个Android应用程序。为此,我需要使用来自txt文件的数据填充SQLite数据库。所以在数据库的onCreate函数中,我正在创建数据库,然后用数据填充它。这就是onCreate的声明:
public void onCreate(SQLiteDatabase db) {
但是当我在onCreate中使用这一行时,:
db = this.getWritableDatabase();
我在运行时在Logcat中收到此错误:“java.lang.IllegalStateException:getDatabase(递归调用(812)”)。 所以现在我无法从onCreate里面填充数据库,而且卡住了。任何帮助将不胜感激。
答案 0 :(得分:2)
onCreate()在第一次调用getReadableDatabase或getWriteableDatabase时被调用。当然正在发生的是onCreate被递归调用,因为还没有创建db而你的
db = this.getWritableDatabase();
调用触发创建中的创建。
如果需要预填充数据库,只需使用onCreate
的db参数作为可写数据库。
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(YOUR_STATEMENT);
.
.
}
如果您需要使用
执行大量数据库操作db.beginTransaction();
.
.
db.setTransactionSuccessful();
} catch (SQLException e) {
} finally {
db.endTransaction();
}
通常更快。