我用ADOQUERY组件执行一个数据更新的操作代码,并且执行了ADOQUERY1.EXECSQL的语句,编译也成功了。可是执行完了,数据库并没有更新。奇怪的是我做的insert和delete都可以成功!大家帮帮想以下是什么原因?
解决方案 »
- xml的问题
- excel 導入sqlserver
- 如何只用API来编写程序?
- 大侠帮忙!小弟在线等候。。。。。。
- 函数的声明问题!
- 大家请近来看看,能帮忙的尽量帮我一下,分不够可以再加,绝不食言!
- 中quickrep的qrdbtext中数据为什么只显示数据表中的第一行?
- 有会计软件方面的高手吗?交个朋友!
- 讨论: 中国篮协正式做出决定 将王治郅开除出国家男篮, 来者有分!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- 浮点数的问题
- 实在忍不住了,问个问题,delphi里写SQL语句一定要通过SQL.ADD('');添加吗??有没有一次把大量SQL语句导入程序的?
- 如何判断数据库中表是否存在?如何在程序中控制动态生成表名?谢谢
或者
ADOQuery.Sql.SaveToFile('c:\sql.txt');
ADOQuery.ExecSql;
在去C盘下看看SQL有没有写对,可以COPY到数SQL调试器里执行一下看.
var
adoquery1:Tadoquery;
begin
adoquery1:=Tadoquery.Create(self);
adoquery1.Connection :=adoconnection1;
adoquery1.close ;
if radiobutton2.Checked then
begin
adoquery1.SQL.Clear;
adoquery1.SQL.Add('update operator set pword=code,type=usertype,qx1=q1,qx2=q2,qx3=q3,qx4=q4,lasttime=ltime where username=userid');
adoquery1.Parameters.Clear ;
adoquery1.Parameters.AddParameter;
adoquery1.Parameters[0].Name :='userid';
adoquery1.Parameters[0].DataType:=ftstring;
adoquery1.Parameters[0].Direction :=pdinput;
adoquery1.Parameters[0].Value :=edit1.Text ;
adoquery1.Parameters.AddParameter;
adoquery1.Parameters[1].Name :='code';
adoquery1.Parameters[1].DataType:=ftstring;
adoquery1.Parameters[1].Direction :=pdinput;
adoquery1.Parameters[1].Value :=edit2.Text ;
adoquery1.Parameters.AddParameter;
adoquery1.Parameters[2].Name :='usertype';
adoquery1.Parameters[2].DataType:=ftstring;
adoquery1.Parameters[2].Direction :=pdinput;
adoquery1.Parameters[2].Value :=edit3.Text ;
adoquery1.Parameters.AddParameter;
adoquery1.Parameters[3].Name :='q1';
adoquery1.Parameters[3].DataType:=ftboolean;
adoquery1.Parameters[3].Direction :=pdinput;
adoquery1.Parameters[3].Value :=checkbox1.Checked ;
adoquery1.Parameters.AddParameter;
adoquery1.Parameters[4].Name :='q2';
adoquery1.Parameters[4].DataType:=ftboolean;
adoquery1.Parameters[4].Direction :=pdinput;
adoquery1.Parameters[4].Value :=checkbox2.Checked;
adoquery1.Parameters.AddParameter;
adoquery1.Parameters[5].Name :='q3';
adoquery1.Parameters[5].DataType:=ftboolean;
adoquery1.Parameters[5].Direction :=pdinput;
adoquery1.Parameters[5].Value :=checkbox3.Checked ;
adoquery1.Parameters.AddParameter;
adoquery1.Parameters[6].Name :='q4';
adoquery1.Parameters[6].DataType:=ftboolean;
adoquery1.Parameters[6].Direction :=pdinput;
adoquery1.Parameters[6].Value :=checkbox4.Checked ;
adoquery1.Parameters.AddParameter;
adoquery1.Parameters[7].Name :='ltime';
adoquery1.Parameters[7].DataType:=ftdatetime;
adoquery1.Parameters[7].Direction :=pdinput;
adoquery1.Parameters[7].Value :=strtodate(maskedit1.Text) ;
adoquery1.ExecSQL ;
application.MessageBox('修改该操作用户成功!','信息提示框',mb_ok);
adoquery1.Close ;
end
else
.......
后面就省略了
>>>>>>>>>>>>>>>
应该都用 =:
如楼上所说:要这么写SQL描叙
adoquery1.SQL.Text:='update operator set pword=:code,type=:usertype,qx1=:q1,qx2=:q2,qx3=:q3,qx4=:q4,lasttime=:ltime where username=:userid';
procedure Tchangepassword.Edit1Exit(Sender: TObject);
var
adodataset1:Tadodataset;
begin
adodataset1:=Tadodataset.Create(self);
adodataset1.Connection :=adoconnection1;
adodataset1.Close ;
adodataset1.CommandType :=cmdtext;
adodataset1.CommandText :='select * from operator where username=s0';
adodataset1.Parameters.Clear;
adodataset1.Parameters.AddParameter ;
adodataset1.Parameters[0].Name:='s0';
adodataset1.Parameters[0].DataType :=ftstring;
adodataset1.Parameters[0].Direction :=pdinput;
adodataset1.Parameters[0].Value :=edit1.Text ;
adodataset1.Active :=true;
if adodataset1.Recordset.RecordCount=1 then
begin
edit2.SetFocus ;
end
else
begin
application.MessageBox('FAAFDSAFSD啊',mb_ok);
edit1.Text :='';
edit1.SetFocus ;
end;
end;
-----------------------------
其实我在看别人的作品时,他们也都有用冒号,也许是自己受SQL2000的影响吧!把习惯带进来了。
var
adoquery1:Tadoquery;
begin
adoquery1:=Tadoquery.Create(self);
adoquery1.Connection :=adoconnection1;
if radiobutton2.Checked then
begin
with adoquery1 do
begin
close;
SQL.Clear;
SQL.Add('update operator set pword=:code,type=:usertype,qx1=:q1,qx2=:q2,qx3=:q3,qx4=:q4,lasttime=:ltime where username=:userid');
parameters.parambyname('code').value:=Trim(edit2.Text);
parameters.parambyname('usertype').value:=Trim(edit3.Text);
parameters.parambyname('q1').value:=checkbox1.Checked;
parameters.parambyname('q2').value:=checkbox2.Checked;
parameters.parambyname('q3').value:=checkbox3.Checked;
parameters.parambyname('q4').value:=checkbox4.Checked;
parameters.parambyname('ltime').value:=strtodate(maskedit1.Text);
parameters.parambyname('userid').value:=Trim(edit1.Text);
ExecSQL ;
application.MessageBox('修改该操作用户成功!','信息提示框',mb_ok);
end;
end;