我是想当删除表a中记录的时候,同时把表b,c中的相关记录删除,由于表比较多,想一次更新。如:
query1.sql.add('insert into table1 (a,b) values(0,0)');
query1.sql.add('insert into table2 (a,b) values(0,0)');
query1.sql.add('insert into table3 (a,b) values(0,0)');
query1.execsql;类似这样,请相信我语法绝对没有写错的地方,我也尝试过每个语句之间加;(分号)处理,query1.sql.add('insert into table1 (a,b) values(0,0);');也是不行。
请高手指教,俺不想做成
query1.sql.text:='insert into table1 (a,b) values(0,0)';
query1.execsql;
query1.close;
queryery1.sql.text:='insert into table2 (a,b) values(0,0)';
.
.
.
.
这样。也不能用循环。
query1.sql.add('insert into table1 (a,b) values(0,0)');
query1.sql.add('insert into table2 (a,b) values(0,0)');
query1.sql.add('insert into table3 (a,b) values(0,0)');
query1.execsql;类似这样,请相信我语法绝对没有写错的地方,我也尝试过每个语句之间加;(分号)处理,query1.sql.add('insert into table1 (a,b) values(0,0);');也是不行。
请高手指教,俺不想做成
query1.sql.text:='insert into table1 (a,b) values(0,0)';
query1.execsql;
query1.close;
queryery1.sql.text:='insert into table2 (a,b) values(0,0)';
.
.
.
.
这样。也不能用循环。
解决方案 »
- 帮我看看 这个sql语句如何实现
- [入門問題]如何控制在输入框中迴車之後將內容向選定路徑下的記事本寫入?
- 怎样使用API读(包括建立)、写、查找二进制文件?
- 送分50分:Incompatible types问题。
- 怎么样调用远程数据模块里的函数
- !!!大家帮忙!谁有主窗体中类似oicq菜单的源码?需要援助!在线等!
- 我该选择哪份工作
- 请问关于opendialog
- 以上是小弟编的计算π的算法,可结果是0,我错在那里?
- 哪位大虾知道如何在网站重复投票(就是有些网站只让同一IP投一次票,我想有没有办法多投)?有没有好方法?
- 請教一個Quickrep 報表顯示問題﹗急...在線等...onlining!!!!
- 搞脑筋,intel面试题目,大家来讨论啊!
你用存储过程吧,把要处理的语句写在存储过程里面,然后调用一下吧,要用到什么参数就用存储过程参数传进去好了
首先把这些 insert 语句一句一句存到一个TStringList中.
然后对这个stringLis做循环处理,每循环一次就把它的不同行加奔到query中执一遍,不就可以了. 当然. 加上事务处理比较稳妥.
query1.sql.text:='insert into table1 (a,b) values(0,0)';
query1.execsql;
query1.sql.clear;
queryery1.sql.text:='insert into table2 (a,b) values(0,0)';
query1.execsql;
query1.sql.add('insert into table1 (a,b) values(0,0)');
query1.sql.add('insert into table2 (a,b) values(0,0)');
query1.sql.add('insert into table3 (a,b) values(0,0)');
query1.execsql;应该可以啊。
除非table1,table2,table3表中还有一些不允许为空的字段你没有指定值。
query1.SQL.Clear;
sqlstr:='select count(*) from dbo.statistic_type ';
query1.SQL.Add(sqlstr) ;
query1.Open;
a:=query1.Fields[0].Value;
edit3.Text:=inttostr(a);
query1.SQL.Clear;
sqlstr:='select count(*) from dbo.statistic_type where trantype=1';
query1.SQL.Add(sqlstr) ;
query1.Open;
edit1.Text:=query1.Fields[0].AsString;
query1.SQL.Clear;
sqlstr:='select count(*) from dbo.statistic_type where trantype=0';
query1.SQL.Add(sqlstr) ;
query1.Open;
edit4.Text:=query1.Fields[0].AsString;
query1.SQL.Clear;
sqlstr:='select TranName, TranCode, DellCode from dbo.statistic_type where trantype=0';
query1.SQL.Add(sqlstr) ;
query1.Open;
刚写的一段代码!想法应该同你一样,试国可行!
query1.sql.Clear;////////////////////
query1.sql.add('insert into table1 (a,b) values(0,0)');
query1.sql.add('insert into table2 (a,b) values(0,0)');
query1.sql.add('insert into table3 (a,b) values(0,0)');
query1.execsql;
如是Oracle,要这样才写
query1.sql.Clear;////////////////////
query1.sql.add('begin');////
query1.sql.add('insert into table1 (a,b) values(0,0);');/////
query1.sql.add('insert into table2 (a,b) values(0,0);');/////
query1.sql.add('insert into table3 (a,b) values(0,0);');/////
query1.sql.add('end;)////////
query1.execsql;
query1.sql.add('insert into table2 (a,b) values(0,0)');
query1.sql.add('insert into table3 (a,b) values(0,0)');
query1.execsql;应该可以的,要不后面加上go好了
query1.sql.add('insert into table1 (a,b) values(0,0) go');
query1.sql.add('insert into table1 (a,b) values(0,0)');
query1.sql.add('insert into table2 (a,b) values(0,0)');
query1.sql.add('insert into table3 (a,b) values(0,0)');
这样,想想是什么样了,结果是成了一行SQL语句。所以,,,,你应该这样:
query1.sql.add('insert into table1 (a,b) values(0,0)');
query1.sql.add(#13);
query1.sql.add('insert into table2 (a,b) values(0,0)');
query1.sql.add(#13);
query1.sql.add('insert into table3 (a,b) values(0,0)');-----------------
加上“GO”也是可行的,这样的结果是分成了三次执行,影响了效率。
但是,请注意!如果是DML语句是应该加“GO”的。
你可以把SQL语句打印出来看看!就知道是什么地方出错了!
query1.sql.add('insert into table1 (a,b) values(0,0)');
query1.sql.add('insert into table2 (a,b) values(0,0)');
query1.sql.add('insert into table3 (a,b) values(0,0)');
query1.execsql;
而且不支持事务
郁闷啊!
我在做很多单机版程序的时候,数据库都是用的access,不知大家有没有更好的推荐.
其实俺上面还写的简单了,我的实际应用更加复杂,加入每张表的字段和数据都是不同的。使用函数也不过是把所有语句转换成字符串数组,循环执行,效率上没有提高。