ADO是不是在SQL语句内同一个变量不能用多次啊,也就是:
q1.close;
q1.SQL.clear;
q1.SQL.Add('update tb1 set a=:a,b=:a');
q1.parameters.parambyname('a').value=val1;
execsql;
好像这句一执行就出错,在select 中用同一个变量多次又没有问题
q1.close;
q1.SQL.clear;
q1.SQL.Add('update tb1 set a=:a,b=:a');
q1.parameters.parambyname('a').value=val1;
execsql;
好像这句一执行就出错,在select 中用同一个变量多次又没有问题
解决方案 »
- 下面是监控键盘的的钩子代码,哪位赐教我一下,如何当同时按下shift和方向键时有个标记
- 怎么将String转换成byte数组啊?
- 关于IE插件接口的问题。
- 怎样使数据库字段值为零的数据在报表中显示为空?
- 可不可以在打开一个程序的时候,建立一个线程来监听一个端口
- 还是老问题?
- 如何让memo中按下一个key后让这个key不显示?
- 各位大哥 ,谁知道<<delphi 5开发人员指南>>的配套光盘在哪下载??
- delphi的优点?
- Dephi组件: 要自己从属性编辑类中继承一个自己的属性编辑器,应Uses那个文件,应注意哪些问题谢谢!!!!
- 送分了!
- 高分问题!!idtcpclient如何接受从一个JAVA返回的TCP消息呢?
q1.SQL.clear;
q1.SQL.Add('update tb1 set a=:a,b=:b');
q1.parameters.parambyname('a').value=val1;
q1.parameters.parambyname('b').value=val2;
execsql;
这样使你的程序的可阅读性变得很差,用不同的变量名也很方便哈像这样多好的: q1.Close;
q1.SQL.Clear;
q1.SQL.Add('update tb1 set a=:a,b=:b');
q1.Prameters.ParamByname('a').value=val1;
q1.Parameters.ParamByname('b').value=val2;
EXECSQL;
q1.SQL.Clear;
q1.SQL.Add('DECLARE @IA INT SET @IA = :a update tb1 set a=@IA,b=@IA');
q1.Prameters.ParamByname('a').value=val1;
EXECSQL;
在MS SQL SERVER2000可以这样用
q1.SQL.Clear;
q1.SQL.Add('update tb1 set a=:a,b=:b');
q1.Prameters.ParamByname('a').value=val1;
q1.Parameters.ParamByname('b').value=val2;
EXECSQL;
--------------------------------------------------------------
不好意思,谁能告诉我,我搞不明白为什么要用这两句呢;
q1.Prameters.ParamByname('a').value=val1;
q1.Parameters.ParamByname('b').value=val2;这样有什么好处呢,什么时候用这个好;
-------------------------------------------------------------------------------
直接这样也行啊
q1.Close;
q1.SQL.Clear;
q1.SQL.Add('update tb1 set a='''+变量a+''',b='''+变量b+'''');
---------------------------------------------------------------
对MS SQL SERVER2000
q1.Close;
q1.SQL.Clear;
q1.SQL.Add('DECLARE @IA INT SET @IA = :a; update tb1 set a=@IA,b=@IA;');
q1.Prameters.ParamByname('a').value=val1;
q1.EXECSQL;是可行的,你可以试试
q1.SQL.clear;
q1.SQL.Add('update tb1 set a=:a,b=:b');
q1.parameters.parambyname('a').value=val1;
q1.parameters.parambyname('b').value=val2; execsql;
q1.SQL.clear;
q1.SQL.text:=format('update tb1 set a=%s,b=%0:s',[val1]);
execsql;
if exists(select * from tb1 where id=:id)
update tb1 set a1=:a1,a2=:a2,a3=:a3,a4=:a4,a5=:a5 where id=:id
else
insert into tb1(a1,a2,a3,a4,a5) values(:a1,:a2,:a3,:a4,:a5)如果用BDE的QUERY的话是没有任何问题的,用ADO就显得很麻烦
var
tempstr:String;tempstr:='update tb1 set a='''+变量a+''',b='''+变量b+''''
q1.Close;
q1.SQL.Text:=tempstr;
q1.Execsql
而且''''多了,有点错.学习..
q1.Prameters.ParamByname('a').value=val1;
q1.Parameters.ParamByname('b').value=val2;这样有什么好处呢,什么时候用这个好;
这是参数,如果你用了Prameters,当然就有了参数,就要给参数赋值了
当然可以用变量,不过那样维护不太方便