免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 7220 | 回复: 4
打印 上一主题 下一主题

[C++] 为何SQLite3执行insert可以,但是执行update就database busy [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-10-19 00:57 |只看该作者 |倒序浏览
本帖最后由 hsc_hao 于 2010-10-19 19:01 编辑

以下代码在反复执行insert语句的时候没有问题,但是为什么一执行update语句的时候就死在那了,之后报错说database busy,为什么呀?谁能告诉我一下啊..代码我放在附件里面了,想看全部代码的话看附件里吧,谢谢了...
int errCode = 0;
try
{
        m_lite3DB.open("参保人员信息.db");
        m_lite3DB.setBusyTimeout(5000);
        m_lite3DB.execDML("begin transaction;");
        m_lite3DB.execDML(strSQL);
        m_lite3DB.execDML("commit transaction;");
        m_lite3DB.close();
}
catch (CppSQLite3Exception e)
{
        errCode = 1;
        CString strMsg;
        strMsg.Format("错误代码:%d\r\n错误信息:%s", e.errorCode(), e.errorMessage());
        MessageBox(strMsg, "数据库操作错误", MB_OK | MB_ICONASTERISK);
}
if (0 == errCode)
{
        MessageBox("保存成功!", "保存提示", MB_OK);
}

insurance.rar

180.35 KB, 下载次数: 132

论坛徽章:
0
2 [报告]
发表于 2010-10-19 00:58 |只看该作者
现在数据库里面就只有三条信息,希望遇到过这种问题的帮忙解决一下,程序是用VC6写的

论坛徽章:
0
3 [报告]
发表于 2010-10-19 01:30 |只看该作者
怎么只有人看没有人回答啊~~~痛苦...

论坛徽章:
0
4 [报告]
发表于 2010-10-19 19:02 |只看该作者
代码我更新了一下,改动了一些比较麻烦的地方,但是问题处依旧没有改,希望大大们出手啊~~~~~

论坛徽章:
0
5 [报告]
发表于 2010-10-21 02:09 |只看该作者
算了,贴了那么久了没有人回我,真是悲哀...
问题我已经自己解决了,解决办法是在所有的数据库操作前都加上一句m_lite3Query.finalize();在sqlite3里面就算是查询操作都会把它锁掉,加上这一句就不会再被锁了,感兴趣的人可以拿这上面的代码加别点的功能玩玩,也可以玩玩界面更换之类的,如果有做得比较好看的,大家交流一下,呵呵...
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP