sqlite数据库插入数据出现SQLITE_ERROR[1]:SQL logic error or missing database

ymnhwin 2011-08-15 01:50:53
在每隔100毫秒向数据库插入数据时,有时候会出现:SQLITE_ERROR[1]:SQL logic error or missing database错误。是为什么?
...全文
4260 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
angelgy880505 2012-04-24
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20100704/12/833a9b04-1a7e-478b-87c1-57543f029795.html
你可以参考下这个帖子。
angelgy880505 2012-04-24
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
使用事务没有,提交没有?
[/Quote]
我的数据库每70s左右插入一条记录,需要使用事务吗?
changing_better 2011-08-26
  • 打赏
  • 举报
回复
像这种大数据的插入最好开事务。
WWWWA 2011-08-16
  • 打赏
  • 举报
回复
使用事务没有,提交没有?
iihero 2011-08-16
  • 打赏
  • 举报
回复
你如果在循环开始之前,执行:
db.execDML("begin transaction");

循环结束之后,再执行:
db.execDML("commit")
就不会有问题了。
否则,每次执行insert,都隐含提交事务,频繁打开文件,速度会越来越慢。最后很可能就出错。

sevencat 2011-08-16
  • 打赏
  • 举报
回复
是不是几个线程使用同一个handle在操作?搞个锁,其实即使单线程用下事务,那个性能也已经足够了。
ymnhwin 2011-08-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 iihero 的回复:]
确保100ms以内你的数据能完全插入进去?
[/Quote]

100ms时间够吧,只是简单地插入数据
wsprintf(sCmd,_T("insert into InfoDB values(%d,'%s','%s','%s','%s')"),info->iNo,info->sTitle,info->sSender,info->sTime,info->sText);
db.execDML(sCmd);//执行命令

当连续插入100条时不会出现这种错误,但是当插入500或1000时就会出现这种情况。
部分代码如下:
for(i=0;i<500;i++)//i<1000
{
k=i+1;
InfoList.iNo=k;
InfoDB.AddList(&InfoList);//执行插入数据命令函数,InfoList是存数据
Sleep(100);//休眠100ms
}
iihero 2011-08-15
  • 打赏
  • 举报
回复
确保100ms以内你的数据能完全插入进去?

2,209

社区成员

发帖
与我相关
我的任务
社区描述
其他数据库开发 其他数据库
社区管理员
  • 其他数据库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧