Delphi XE2 と TSQLQuery オブジェクトを使用しています。私がそれを使うのは初めてです。すぐに再利用すると、新しい SQL のパラメーターが解析されず、qry.Params
リストが再構築されません。
var
qry: TSQLQuery;
begin
qry := TSQLQuery.Create(nil);
try
qry.MaxBlobSize := -1;
qry.SQLConnectin := AnExistingConnection;
qry.CommandText := 'select field1 from table1 where fieldX = @valueX';
qry.ParamByName('valueX').Value := 1;
qry.Open;
// ... use data ...
qry.Close;
qry.Params.Clear; // <- works the same with or without this
qry.CommandText := 'select field2 from table2 where fieldY = @valueY';
qry.ParamByName('valueY').Value := 2; // <- Error: 'valueY' Param not found
qry.Open;
finally
FreeAndNil(qry);
end;
end;
私が何をしても問題ありません.2番目のSQLステートメントのパラメーターを解析しないため、「valueY」パラメーターを名前でバインドできません。
2 つの回避策が考えられます。
qry.Params
自分で手動でリストを作成します。qry
2 つのコマンドの間にオブジェクトを破棄して再作成します。
私はこれらのいずれかを行う必要はありません。qry
オブジェクトに、新しい SQL ステートメントがそのプロパティに割り当てられるたびにパラメータを再解析するプロパティまたは何かがあるのではないでしょCommandText
うか?