getDatabase called recursively数据库递归使用错误---解决方法
@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引用之前参数中的,就避免了重复。
其他情况类似,请根据此方法为蓝本,进行改造即可。。。。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。