插入数据只执行一次?
我的插入语句
for i=1 to 1000
insert table1(ziduan1,ziduan2) value(:a1,:a2) using sqlca;
next
每次只执行一条记录?该如何解决。
问题点数:40、回复次数:8Top
1 楼li_d_s(鄙视那些不懂Java却跑来乱骂的人,.NET没啥了不起)回复于 2006-03-06 16:45:29 得分 0
每次插入都判断一下sqlca.sqlcode,看看是否成功,估计是主键重复导致插入失败Top
2 楼leio((郁闷中...))回复于 2006-03-06 16:45:56 得分 0
debug检查循环中的insert语句执行后的SQLCODE值是否为0。
Top
3 楼lzheng2001(1加1)回复于 2006-03-06 17:23:05 得分 5
可能表有主键,而你每次都插入相同的值,所以会引起错误
for i=1 to 1000
insert table1(ziduan1,ziduan2) value(:a1,:a2) using sqlca;
if sqlca.sqlcode <> 0 then messagebox("","错误") //用这句判断
next
Top
4 楼sdhylj(青锋-SS)(献血有益健康(别人的))回复于 2006-03-06 17:40:55 得分 5
肯定有主键约束导致无法插入相同的记录.Top
5 楼xydy2002()回复于 2006-03-07 13:39:06 得分 5
先判断一下了Top
6 楼small_cloud(云起云落)回复于 2006-03-07 13:41:32 得分 0
同意各楼,做SQLCODE的判别Top
7 楼samismile(米兰10年)回复于 2006-03-07 18:04:03 得分 5
我的插入语句
for i=1 to 1000
insert table1(ziduan1,ziduan2) value(:a1,:a2) using sqlca;
next
为什么这样写?
using sqlca;
for i=1 to 1000
insert table1(ziduan1,ziduan2) value(:a1,:a2)
next
Top
8 楼airfont(草原劣马)回复于 2006-03-08 10:58:05 得分 20
for i=1 to 1000
insert table1(ziduan1,ziduan2) value(:a1,:a2) using sqlca;
if sqlca.sqlcode <> 0 then
messagebox("系统提示:","数据有误!")
rollback using sqlca;
else
commit;
end if
next
这样写跟踪,应该可以找到问题的,不过我建议你按下面的方法去做可能更好一些:
string ls_insql
for i=1 to 1000
ls_insql = "insert table1(ziduan1,ziduan2) value( '" + a1 + "','" + a2 + "')"
if sqlca.sqlcode <> 0 then
messagebox("系统提示:","数据有误!,SQL语句为:" + ls_insql)
rollback using sqlca;
else
commit;
end if
next
a1,a1如果为数字型的则去掉单'加上string(a1)Top




