質問

コードを実行しようとすると:

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 プロパティがありません」というエラー メッセージが表示されます。どこで私は間違えましたか?
前もって感謝します!

役に立ちましたか?

解決

Open をまったく使用したくないと思います。パラメータの使用方法が間違っています。
つまりSQL には :PARAM プレースホルダーがありません。次のようなものになると思います: rsnome.SQL.Text:='UPDATE enroll SET nome = :NOME where id = :ID';

この例を参照してください。パラメータを使用した AdoQuery エラー

他のヒント

あなたが呼んでいます 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