这是我的代码:
public class DBHelper extends SQLiteOpenHelper {
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("sql-query");
try {
//db = getWritableDatabase();
fillAllDB(db);
} catch (JSONException e) {
e.printStackTrace();
}
}
// some code
}
fillAllDB(db);
方法向表中添加了一条记录,但在方法调用之前我无法使用db = getWritableDatabase();
- 这会导致循环。在这种情况下该怎么办?
答案 0 :(得分:2)
OnCreate
方法只为您提供可写数据库,因此无需获取可写数据库,当您调用可写/可读数据库时,sqlite框架会检查数据库是否存在,如果没有,则会调用{ {1}}方法,为什么这是递归的,你不应该在onCreate
类的getWritable/getReadable
方法中调用onCreate/onUpgrade
数据库
答案 1 :(得分:1)
使用传递给SQLiteDatabase db
方法的onCreate()
参数作为数据库来调用您的操作。
getWritableDatabase()
和getReadableDatabase()
将调用您的onCreate()
,并且在前一个调用仍在处理时递归调用get...Database()
会导致此异常
另外,在onCreate()
中捕获异常不是一个好主意。如果出现问题,onCreate()
方法不应该正常返回 - 告诉框架数据库设置是否成功。