尝试执行代码时:
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;
我收到错误消息“Missing SQL property”。我哪里出错了?
提前谢谢!
答案 0 :(得分:8)
在通过rsnome.Open
设置SQL之前,您正在调用rsnome.SQL.Text := ...
。
答案 1 :(得分:5)
我认为您根本不想使用Open,而且您使用的参数不正确
即SQL中没有任何:PARAM占位符。我认为应该是这样的:rsnome.SQL.Text:='UPDATE enroll SET nome = :NOME where id = :ID';
答案 2 :(得分:4)
您有几个错误。您在分配SQL之前调用了Open
(并且无需这样做)。
您尝试设置参数值,但尚未创建要接受的参数。 (顺便说一句,我将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;