下面是我的代码:
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(); -这会导致循环。在这种情况下该怎么做?
发布于 2014-09-05 15:51:44
OnCreate方法只给你提供可写的数据库,所以不需要获取可写的数据库,当你调用可写/可读的数据库时,sqlite框架会检查数据库是否存在,如果不存在,它就会调用onCreate方法,这就是为什么这是递归的,不应该在SqliteOpenHelper类的onCreate/onUpgrade方法中调用getWritable/getReadable数据库
发布于 2014-09-05 15:54:35
将传递给onCreate()方法的SQLiteDatabase db参数用作调用操作的数据库。
如果数据库文件不存在,getWritableDatabase()和getReadableDatabase()将调用您的onCreate(),并且在前一个调用仍在处理时递归调用get...Database()会导致此异常。
此外,在onCreate()中捕获异常也不是一个好主意。如果出现问题,onCreate()方法应该不会正常返回--这会告诉框架数据库设置成功。
https://stackoverflow.com/questions/25680919
复制相似问题