码迷,mamicode.com
首页 > 数据库 > 详细

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

时间:2015-03-21 17:12:37      阅读:224      评论:0      收藏:0      [点我收藏+]

标签:android   数据库冲突   

 
@Override
public 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()方法

@Override
public 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引用之前参数中的,就避免了重复。

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

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

标签:android   数据库冲突   

原文地址:http://blog.csdn.net/adayabetter/article/details/44516217

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!