题
试图执行代码时:
function TDBClass.addNome(nome: String): String;
var
rsnome: TADOQuery;
begin
rsnome := TADOQuery.Create(nil);
rsnome.Connection := connection;
rsnome.Open();
rsnome.SQL.Clear;
rsnome.SQL.Text:='UPDATE enroll SET nome = "test" where id ="1"';
rsnome.Parameters.ParamByName('nome').Value:= nome;
rsnome.ExecSQL;
rsnome.post();
rsnome.Close();
rsnome.Free();
end;
我正在收到错误消息“缺少SQL属性”。我哪里做错了?
提前致谢!
解决方案
我认为您根本不想使用打开,并且您使用的参数错误不正确。
即SQL没有任何:param占位符。我认为应该像: rsnome.SQL.Text:='UPDATE enroll SET nome = :NOME where id = :ID';
请参阅此示例:使用参数的adquery错误
其他提示
你在打电话 rsnome.Open
在设置SQL之前 rsnome.SQL.Text := ...
.
您有几个错误。你在打电话 Open
在您分配了SQL之前(并且无需这样做)。
您正在尝试设置未创建要接受的参数的参数值。 (顺便说一句,我也会制作ID一个参数,因此您可以使用它来更新一个以上的名称。)
您不会处理,确保情况清理,以防万一有错误(鉴于您在此处发布的代码肯定会)。
您正在使用 Post
, ,SQL数据库并不需要。
尝试这样的事情:
function TDBClass.addNome(nome: String): String;
var
rsnome: TADOQuery;
begin
rsnome := TADOQuery.Create(nil);
try
rsnome.Connection := connection;
rsnome.SQL.Clear;
rsnome.SQL.Text:='UPDATE enroll SET nome = :nome where id ="1"';
rsnome.Parameters.ParamByName('nome').Value:= nome;
rsnome.ExecSQL;
rsnome.Close();
finally
rsnome.Free();
end;
end;
不隶属于 StackOverflow