实在忍不住了,问个问题,delphi里写SQL语句一定要通过SQL.ADD('');添加吗??有没有一次把大量SQL语句导入程序的?
SQL语句多了,用SQL.ADD();实在是麻烦,还要逐个修改引号,有没有什么方法简便一点的?? 问题点数:0、回复次数:15Top
1 楼jl820712(散乱心绪)回复于 2005-03-02 21:44:32 得分 0
语句仍然要写在程序里,不能外部调用文件导入,我用的是ADOQueryTop
2 楼Bruce_N(深蓝)回复于 2005-03-02 21:47:48 得分 0
我也觉得麻烦,要有种方法一次性写进去就好了
Top
3 楼abcdefgdeng(dqx)回复于 2005-03-02 21:58:40 得分 0
如果有现成的Text在 ListBox1或在
Memo1中可以用这种方法啊:SQL.assign(ListBox1.Items)或SQL.assign(Memo1.Lines)Top
4 楼abcdefgdeng(dqx)回复于 2005-03-02 22:01:01 得分 0
也可以读取外面的.Txt,或.ini文件,然后把内容付给ADOQuery.sql.text
Top
5 楼ttjacky(豆豆糖)回复于 2005-03-02 22:03:45 得分 0
楼上正解Top
6 楼jl820712(散乱心绪)回复于 2005-03-02 22:07:50 得分 0
我觉得麻烦的地方是那些引号啊,如果SQL语句里用到了引号的话(select * from table1 where name='abc'),添加到程序里就要变成SQL.ADD('select * from table1 where name='+'''abc''')
用Memo也一样啊,都要加上引号Top
7 楼jl820712(散乱心绪)回复于 2005-03-02 22:09:05 得分 0
最好不要用到调用外部文件,除了调用外部文件之外还有没有其他方法Top
8 楼linbren(lin)回复于 2005-03-02 23:21:24 得分 0
语句长了用过程函数。这才是正解。Top
9 楼jl820712(散乱心绪)回复于 2005-03-02 23:28:48 得分 0
过程函数??
你指的是存储过程吗?
还是就delphi里的普通过程Top
10 楼big_welley(你快乐,所以我快乐)回复于 2005-03-02 23:36:34 得分 0
就是写个函数吧。
碰到超长的语句,我都是写个函数解决。Top
11 楼kuki84(天道酬勤)回复于 2005-03-02 23:53:43 得分 0
str[1]:='select * from pig where name=布什'
str[2]:='select * from sexpig where name=克林顿'
str[3]:='delete pig where name=小泉纯一郎'
str[4]:='insert into SuperFoolishPig(name,sex) values(小泉纯一郎,n/a)'
for i:=1 to 4 do
begin
adoquery1.close;
adoquery1.sql.clear;
adoquery1.sql.add(str[i]);
try
adoquery1.open
except
adoquery1.execsql
end;
end;Top
12 楼kuki84(天道酬勤)回复于 2005-03-02 23:58:05 得分 0
对有参数的sql,就麻烦了,用三维不定长数组,
如str[1][1] sql 语句
str[1][2][1] 参数名一 str[1][2][2] 参数名二
_HWND[1][3][1] 参数一所在控件句槟一 str[1][3][2] 参数一所在控件句槟一
^ <-忘了怎么拼了。Top
13 楼luxuinstan(小强)回复于 2005-03-03 00:17:10 得分 0
只有add('')语句了,你可以分开多行写嘛。
adosql1.sql.add('aaaaaaaaaaaaaaaaaaaaaaa');
adosql1.sql.add('bbbbbbbbbbbbbbbbbbbbbbb');
........................
try
adosql1.sql.open;
except
showmessage('xx');
end;
Top
14 楼iamdream(梦无止境)回复于 2005-03-03 08:25:57 得分 0
要处理引号,可用QuotedStr函数;
如:
ADOQuery1.SQL.Text := QuotedStr(你的串);Top
15 楼jl820712(散乱心绪)回复于 2005-03-03 10:13:31 得分 0
to 回复人: kuki84() ( ) 信誉:57
汗。。。你这样添加进去可以行吗?引号不对的吧,添加后SQL内执行语句是name=布什而不是name='布什'。
str[1]:='select * from pig where name=布什'
str[2]:='select * from sexpig where name=克林顿'
str[3]:='delete pig where name=小泉纯一郎'
str[4]:='insert into SuperFoolishPig(name,sex) values(小泉纯一郎,n/a)'
for i:=1 to 4 do
begin
adoquery1.close;
adoquery1.sql.clear;
adoquery1.sql.add(str[i]);
try
adoquery1.open
except
adoquery1.execsql
end;
end;
to 回复人: luxuinstan(小强) ( ) 信誉:86
汗,,要是你那样,我也不会来提问了。要是有上百条让你ADD,你还会这样去1条1条添吗?
to 回复人: iamdream(梦无止境) ( ) 信誉:100
你说的我也知道,只是。。。。怎么说呢,还是嫌有点麻烦Top




