getDatabase called recursively数据库递归使用错误---解决方法

来源:互联网 发布:sql多个统计结果 编辑:程序博客网 时间:2024/05/22 06:17
 
@Overridepublic void onCreate(SQLiteDatabase db) {    // Create tables            db.execSQL(CREATE_CATEGORIES_TABLE);            db.execSQL(CREATE_CHRGDATA_TABLE);    db.execSQL(CREATE_SETTINGS_TABLE);    setDefaultLabel();}/** *  */public void setDefaultLabel() {    // create default label    SQLiteDatabase db = this.getWritableDatabase();    ContentValues values = new ContentValues();    values.put(KEY_NAME, "Default");    db.insert(TABLE_LABELS, null, values);}

代码中onCreate方法中的setDefaultLabel()方法里再次调用了SQLiteDataabase造成,数据库递归调用,此时的解决办法为:修改setDefaultLabel()方法

@Overridepublic void onCreate(SQLiteDatabase db) {    // Create tables            db.execSQL(CREATE_CATEGORIES_TABLE);            db.execSQL(CREATE_CHRGDATA_TABLE);    db.execSQL(CREATE_SETTINGS_TABLE);    setDefaultLabel(db);}/** *  */public void setDefaultLabel(SQLiteDatabase db) {    // create default label    ContentValues values = new ContentValues();    values.put(KEY_NAME, "Default");    db.insert(TABLE_LABELS, null, values);}
此时,SQLiteDatabase引用之前参数中的,就避免了重复。

其他情况类似,请根据此方法为蓝本,进行改造即可。。。。

1 0