0

这是我的代码:

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();在方法调用之前使用 - 这会导致循环。在这种情况下该怎么办?

4

2 回答 2

2

OnCreate方法只给你可写的数据库,所以不需要获取可写的数据库,当你调用可写/可读的数据库时,sqlite框架会检查数据库是否存在,如果不存在就会调用onCreate方法,为什么这是递归的,你不应在类的方法中调用getWritable/getReadable数据库onCreate/onUpgradeSqliteOpenHelper

于 2014-09-05T07:51:43.860 回答
1

使用SQLiteDatabase db传递给您的onCreate()方法的参数作为数据库来调用您的操作。

getWritableDatabase()并且会在数据库文件不存在的情况下getReadableDatabase()调用你,并且在前一个调用仍在处理时递归调用会导致此异常。onCreate()get...Database()

此外,捕获异常onCreate()也不是一个好主意。如果有问题,该onCreate()方法不应该正常返回 - 这告诉框架数据库设置成功。

于 2014-09-05T07:54:35.087 回答