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 中用同一个变量多次又没有问题
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,当然就有了参数,就要给参数赋值了
当然可以用变量,不过那样维护不太方便