我目前是如下这样写, 但感觉很多不方便,只能用于简单的语句,主要是不方便跟参数走. 因为有时候语句非常大。请教诸位,要带参数走的sql 执行过程要怎么写呢?表名也是灵活的,字段有多有少,并不固定,希望大侠能指点小弟。怎么写最实用,最方便。
procedure TDtModule.LrSearch(a:string);
begin
with adoquery1 do
begin
close;
sql.clear;
sql.add(a);
exesql;
end;
end;
procedure TDtModule.LrSearch(a:string);
begin
with adoquery1 do
begin
close;
sql.clear;
sql.add(a);
exesql;
end;
end;
解决方案 »
- Query field "CarID"not find?
- 各位大哥大姐给个例子delphi下现实多语言
- delphi 开发的客户端访问oracle数据库,如何打包
- 在客户端是否能获得应用服务器端query或adoquery中sql.text的值? 怎么实现?
- 如何以TListView中的内容作报表
- 高手帮忙!!怎么显示隐藏的桌面图标————在线等待!!急急急!!!
- 怎么从过程和函数中退出?
- 我找到一个可以将Html文件编译成EXE文件的工具,我把我的网站都编译成一个EXE了。
- 这个问题怎么这么难?
- 请问哪里有Email检测器的源代码
- 在线程中控制当前窗体按钮状态时报错
- 我写的一个自定义权限控制过程,请高手看看问题在哪里。
procedure TForm1.Open_Data(aDataSet:Tadoquery;aSQL:string;aParm:array of Variant);
var i:integer;
begin
with aDataSet do
begin
close;
sql.clear;
for i:=Low(aParm) to High(aParm) do
parameters[i].value"=aParm[i];
open;
end;
end;procedure TForm1.Button1Click(sender:TObject);
var aSQL_Parm:array of Variant;
begin
setlength(aSql_Parm,2);
aSQL_Parm[0]:=2; //整型参数
aSQL_Parm[1]:='2011-4-24'; //日期型参数
Open_Data(adoquery1,'select * from NCG_Dwmc where dw_ID=:dw_ID or sh_Rq>:SH_Rq ');
end;//有多种返回值的方式,楼主可以举一返三,尝试一下。执行存储过程可以只传递一个存储过程名及参数列表即可。如果要传递连接参数,也可以将过程中加入一个如Tadoconnection进去。
parameters[i].value:=aParm[i];
例如
const
s1 = 'delete from relaysence where NetId = %d and DeviceId = %d and SenceId = %d';
var
sql1: string;
begin
sql1 := Format(s1, [1,2,3]);
with adoquery1 do
begin
close;
sql.clear;
sql.add(sql1);
...//执行数据库sql语句后的相关操作
end;
end;
不知楼主是否是这个意思,或有更好的方法一起学习学习 呵呵