免费注册 查看新帖 |

Chinaunix

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

用过sqlite3的进来看看 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-11-27 16:46 |只看该作者 |倒序浏览
     现在用c/c++ 来捣鼓sqlite3,用了一个网上搜过来的C++类:对sqlite3C接口进行了简单封装.
现在碰到一个问题:
     单独插入100000条数据的时候没问题,如果我想把一个表插入1百W条,另一个表中也插入1百W条的时候.只有第一个表全部插入了,第2个表
只有部分插入,请问这会是什么原因引起的?

论坛徽章:
0
2 [报告]
发表于 2008-11-27 17:00 |只看该作者
每条SQL的返回值都检查了吗?
也许有失败的SQL?

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
3 [报告]
发表于 2008-11-27 17:14 |只看该作者
原帖由 bleem1998 于 2008-11-27 17:00 发表
每条SQL的返回值都检查了吗?
也许有失败的SQL?


对,检查返回值。另外,作为测试,可以先写个脚本直接插入1M条

[ 本帖最后由 Godbach 于 2008-11-27 18:45 编辑 ]

论坛徽章:
0
4 [报告]
发表于 2008-11-27 17:44 |只看该作者
原帖由 bleem1998 于 2008-11-27 17:00 发表
每条SQL的返回值都检查了吗?
也许有失败的SQL?


失败的SQL??什么意思.
SQL语句是一样的啊, 就是用循环插入的.

论坛徽章:
0
5 [报告]
发表于 2008-11-27 17:50 |只看该作者
原帖由 hr_it 于 2008-11-27 17:44 发表


失败的SQL??什么意思.
SQL语句是一样的啊, 就是用循环插入的.


那就不知道了
是不是库用的时候有什么要注意的?
比如是不是每执行一个SQL要释放一次连接
不然执行多了可能就有问题了
都只是猜测而已
谁叫你用的不是标准库

论坛徽章:
0
6 [报告]
发表于 2008-11-27 17:54 |只看该作者
原帖由 bleem1998 于 2008-11-27 17:50 发表


那就不知道了
是不是库用的时候有什么要注意的?
比如是不是每执行一个SQL要释放一次连接
不然执行多了可能就有问题了
都只是猜测而已
谁叫你用的不是标准库


标准库对这个问题处理的时候是这么干的么?
for(int i=0; i<1000000; i++)
      sqlite3_exec(db,  "insert into a_table values(..., ...),  0, 0, &ErrMsg);


for(int i=0; i<1000000; i++)
      sqlite3_exec(db,  "insert into b_table values(..., ...),  0, 0, &ErrMsg);

论坛徽章:
0
7 [报告]
发表于 2008-11-27 18:02 |只看该作者
原帖由 hr_it 于 2008-11-27 17:54 发表


标准库对这个问题处理的时候是这么干的么?
for(int i=0; i



以前用C写的一个万能SQL执行函数
什么select\insert\update都能执行
大概看起来是这样的
没有用到你说的那个函数sqlite3_exec而是用的sqlite3_prepare

  1. 不给你看
复制代码

[ 本帖最后由 bleem1998 于 2008-11-28 09:45 编辑 ]

论坛徽章:
0
8 [报告]
发表于 2008-11-27 18:43 |只看该作者
你这是处理2进制的数据的吧

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
9 [报告]
发表于 2008-11-27 19:50 |只看该作者
标准库对这个问题处理的时候是这么干的么?
for(int i=0; i<1000000; i++)
      sqlite3_exec(db,  "insert into a_table values(..., ...),  0, 0, &ErrMsg);


for(int i=0; i<1000000; i++)
      sqlite3_exec(db,  "insert into b_table values(..., ...),  0, 0, &ErrMsg);


就是这样插入的时候出现错误了吗?

论坛徽章:
0
10 [报告]
发表于 2008-11-28 09:01 |只看该作者
原帖由 Godbach 于 2008-11-27 19:50 发表


就是这样插入的时候出现错误了吗?


这样是没问题的. 这个是插入常量的吧. 比如sqlite3_exec(db, "insert into table values('abc', 1 ,2)", 0, 0, &ErrMsg);
如果我想插入的时候不想固定值, 值由我输入来确定该怎么弄?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP