ここでの「不足している SQL プロパティ」とは何ですか?
質問
コードを実行しようとすると:
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;
所属していません StackOverflow