N
navy
Unregistered / Unconfirmed
GUEST, unregistred user!
前几天,我发帖子问事务中循环插入数据库的失败问题,今天在同事的帮助下好像解决了.
居然是sql语句不能分开写的问题!
code如下:
var i:integer;
begin
adoconnection1.begintrans;
try
for i:=0 to 9 do
begin
adoquery1.close;
adoquery1.sql.clear;
adoquery1.sql.add('insert into mytable1 values ( '); --??
adoquery1.sql.add(':name,:address)'); --??
adoquery1.parameters[0].value:='name'+inttostr(i);
adoquery1.parameters[0].value:='addr'+inttostr(i);
adoquery1.execsql;
end;
adoconnection1.committrans;
except
adoconnection1.rollbacktrans;
end;
end;
各位认为??的两句有问题吗?
执行该段代码,执行结果只有最后一句成功,即只有name9,addr9 插入数据库成功!!
如果 将adoquery1.sql写成一句:
adoquery1.sql.add('insert into mytable1 values name,:address)');
执行则成功,10条记录都插入成功!!
是sql数据库要求?delphi的ado问题(bug)?
环境:win2k+d5 enterprise +d5 update1,d5 ado update1+msado v2.6+mssql server7.
居然是sql语句不能分开写的问题!
code如下:
var i:integer;
begin
adoconnection1.begintrans;
try
for i:=0 to 9 do
begin
adoquery1.close;
adoquery1.sql.clear;
adoquery1.sql.add('insert into mytable1 values ( '); --??
adoquery1.sql.add(':name,:address)'); --??
adoquery1.parameters[0].value:='name'+inttostr(i);
adoquery1.parameters[0].value:='addr'+inttostr(i);
adoquery1.execsql;
end;
adoconnection1.committrans;
except
adoconnection1.rollbacktrans;
end;
end;
各位认为??的两句有问题吗?
执行该段代码,执行结果只有最后一句成功,即只有name9,addr9 插入数据库成功!!
如果 将adoquery1.sql写成一句:
adoquery1.sql.add('insert into mytable1 values name,:address)');
执行则成功,10条记录都插入成功!!
是sql数据库要求?delphi的ado问题(bug)?
环境:win2k+d5 enterprise +d5 update1,d5 ado update1+msado v2.6+mssql server7.