Query:=TADOQuery.create(nil);//正确
Query.Connection:=dmData.ADOCon;//正确
Query.SQL.Add('delete Operator where UserName=:UserName');
Query.Parameters.ParamByName('UserName').Value :=UserName ;
Query.ExecSQL ;//执行时报错
Query.close;
Query.Free;
为什么执行时报错呢?Operator 是表
Query.Connection:=dmData.ADOCon;//正确
Query.SQL.Add('delete Operator where UserName=:UserName');
Query.Parameters.ParamByName('UserName').Value :=UserName ;
Query.ExecSQL ;//执行时报错
Query.close;
Query.Free;
为什么执行时报错呢?Operator 是表
这是ADOquery1的属性
query1 没有这个属性的.看这个
直接写 ADOquery1. 它就弹出属性,有就选,回车,没有也不能直接手写这样会减少出错.正确的应是
ADOquery1.SQL.Add('select * from stuinfo where 性别=:xb');
ADOquery1.Parameters.ParamByName('xb').Value:=trim(edit3.text);
ADOquery1.Open;
而 query1.
Query1.Params[0].AsString:=edit1.Text;
Var
Quer:TADOQUery;楼上的还是不行。
Query.Parameters.Item[0].value := ***;Query.Parameters.ParamValues['UserName'] :=***;
因为按照他的赋值方式,userName参数根本就没有值。
Query:=TADOQuery.create(nil);//正确
try
Query.Connection:=dmData.ADOCon;//正确
Query.SQL.Add('delete from Operator where UserName='+QuotedStr(UserName));
Query.ExecSQL ;//执行时报错
Query.close;
finally
Query.Free;
end
对了 你要先判断
if length(trim(UserName))<>0 then
begin
..........
end
try
Q_.Connection:=dmData.ADOCon;
Q_.SQL.Add('delete from Operator where [UserName]=:UsName');
Q_.Parameters.ParamByName('UsName').Value:=UserName;
Q_.ExecSQL;
finally
Q_.Free;
end
DELETE [表名.*]
FROM 表名
WHERE 条件表达式
2.
楼主的SQL语句时,最好不要出现 系统保留字 一类的,比如system user password 之类,
如果要用须用[]括起来,比如[system] [user] [password]
如: if DBGridEh1.DataSource.DataSet.FieldValues['SA'] <> Null then
UserName':= DBGridEh1.DataSource.DataSet.FieldValues['SA']
Query:=TADOQuery.create(nil);//正确
Query.Connection:=dmData.ADOCon;//正确
Query.SQL.Add('delete Operator where UserName=:UserName');
Query.Parameters.ParamByName('UserName').Value :=UserName ;
Query.ExecSQL ;//执行时报错
Query.close;
Query.Free;
应该不会错.