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

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

时间: 2024-10-29 10:46:17

getDatabase called recursively数据库递归使用错误---解决方法的相关文章

sql server数据库可疑状态解决方法

前段时间客户数据服务器断电,开机后发现数据库状态标记为可疑,可能是断电引起的数据库日志文件损坏,修复方法如下: 只有mdf文件,重建日志: 1 --注:example为测试用数据库,相应的Example_log.ldf为测试用的日志文件 2 use master 3 go 4 alter database example set emergency 5 go 6 --置数据库为单用户模式 7 alter database example set single_user with rollback

数据库出错的解决方法

1.SQLServer2008数据库sa账户登录127.0.0.1失败 http://wenku.baidu.com/link?url=FiTOMHmOBYJp3LFKYFuHNN2uHn_00zSVbVLgudRa9QA2usB5liFjQbKah4F9GcqUfgWQiMfxDwx9-6kyFnAaaTd9PR72S-ZOuKR_CxJxETW&qq-pf-to=pcqq.c2c 2.SqlServer配置管理器中的sql服务    远程过程调用失败 http://wenku.baidu.c

jsp页面保存到数据库有乱码解决方法

第一种: 在页面前加上 <%@ page language="java" contentType="text/html;charset=gbk" errorPage=""%> <%request.setCharacterEncoding("GBK");%> 第一行说明你的页面用的是中文编码 第二行声明你的页面传值也用中文编码 第二种 tomcat4.x支持中文传码,但5.x不支持,如果用5.0以上的版本

Linux 删除mysql数据库失败的解决方法

使用命令:drop database xxx:删除本数据库时却删除失败,系统提示出现了错误,错误代码为: ERROR 1010 (HY000): Error dropping database(can't rmdir './xxx/',errno:17); 解决方法: 1.find /  -name xxx(找到xxx--数据库名的文件夹) 2.rm -rf /xxx/*(删除此文件夹下的所有文件) 总结:应该是在xxx目录下生成了操作数据库时留下的几个非数据库文件,导致无法删除,将这些文件删除

php连接Access数据库错误及解决方法

<?php $connstr="DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" . realpath("data.mdb"); $connid=odbc_connect($connstr,"","",SQL_CUR_USE_ODBC); $issuetime=date("Y-m-d H:i:s"); $sql="insert into test

SQL Server附加数据库拒绝访问解决方法汇总

@本文来自百度 方法一:修改权限法 1 打开要附加的数据库文件所在的文件夹,即扩展名为mdf的文件所在的文件夹,如下图所示: 2 右键单击mdf文件,选择“属性”,如下图所示: 3 单击“安全”选项卡,如下图所示: 4 单击“编辑”按钮,如下图所示: 5 在弹出的对话框中的“组或用户名”中选中"Authenticated Users",如下图所示: 6 在“Authenticated Users的权限”下,勾选"完全控制",  "完全控制"被勾选

数据库高并发解决方法总结

一个项目刚开始的时候是为了实现基本功能,随着版本和功能的迭代,大数据和高并发成了软件设计必须考虑的问题! 本质很简单,一个是慢,一个是等. 两者是相互关联的,因为慢,所以要等,因为等,所以慢,解决了慢,也就解决了等,解决了等,也就解决了慢. 关键是如何解决慢和等,核心一个是短,一个是少,一个是分流,最后一个是集群/横向扩张/读写分离/建立主从. 短是指路径要短: 典型的mvc结构是请求->controller->model->dao->view,然后把页面返回给用户.要想短的话,

MSDB数据库置疑的解决方法

1.原因 机房停电,服务器非法关机,导致MSDB数据库被“置疑” 2.Msdb数据库的作用 Msdb 数据库供SQLServer 代理程序调度警报和作业以及记录操作员时使用.比如,我们备份了一个数据库,会在表backupfile中插入一条记录,以记录相关的备份信息. 3.实现逻辑 由于Msdb数据库并未存储特别重要的信息,因此可以从别的机器拷贝一份相同的msdbdata.mdf和msdblog.ldf覆盖掉即可. 4.解决步骤 A服务器为被“置疑”的服务器:B服务器上装有和A服务器相同版本的数据

SQLSERVER2008 数据库可疑的解决方法

1 把问题数据库备份后直接删除 停掉SQLSERVER服务,把服务器上出问题的数据库, 假设名称为 ErrorDB的数据库文件及日志文件备份到其他目录,然后直接将其删除,把其数据库文件及日志文件也删除 2 新建同名数据库 启动SQLSERVER服务,新建同名数据库ErrorDB,文件目录和日志和原来一致 3 用备份的数据库文件替换新的数据库文件 停掉SQLSERVER服务,把备份的数据库文件替换新的数据库文件(只替换数据库文件,不替换日志文件) 启动SQLSERVER服务,打开数据库,这时数据库