2

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

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

4

3 に答える 3

8

rsnome.OpenでSQLを設定する前に呼び出していますrsnome.SQL.Text := ...

于 2011-11-30T12:47:45.553 に答える
5

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

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

于 2011-11-30T13:03:20.937 に答える
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;
于 2011-11-30T13:59:32.160 に答える