试图执行代码时:

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;
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top