4

dbExpressTSQLQueryコンポーネントを使用したい。しかし、パラメータを追加するSQLの書き方がわかりません。例を挙げましょう。私の問題が何であるかがより明確になるかもしれません。

TADOQueryでは、次のように機能します。

SELECT*
FROM sometable
WHERE sometable.id = :value;

上記の例では、パラメーター名の前にコロン(:)を使用して、パラメーターをクエリに渡します。しかし、TSQLQueryを使用してこれを実行しようとすると、次のエラーが発生します。

dbExpress driver does not support the TDBXTypes.UNKNOWN data type. Vendor Error Message.

これがTSQLQueryコンポーネントでパラメーターを渡す方法ではない場合、誰かが私を助けてくれませんか。これは私にとって新しい領域です。

Firebirdデータベースを使用しているIm、およびDelphiXE2を使用しているIm

4

1 に答える 1

9

パラメータのプロパティを設定するには、プロパティを使用する必要がありParamsます。ここから、インデックスまたは名前を使用して各パラメーターにアクセスできます。パラメーターの値を設定するには、フィールドのタイプに応じて、プロパティ AsStringAsIntegerなどのいずれかを使用します。

このサンプルを確認してください

var
  LSQLQuery : TSQLQuery;
begin
  LSQLQuery:=TSQLQuery.Create(nil);
  try
    LSQLQuery.SQLConnection:=SQLConnection1;
    LSQLQuery.CommandText:='Select FIRST_NAME from EMPLOYEE Where EMP_NO=:Param1';
    LSQLQuery.Params.ParamByName('Param1').AsInteger:=2;//or using the index of the parameter LSQLQuery.Params[0].AsInteger:=2; 
    LSQLQuery.Open;//Execute the query
    ShowMessage(LSQLQuery.FieldByName('FIRST_NAME').AsString); //get the data
    LSQLQuery.Close;
  finally
    LSQLQuery.Free;
  end;
end;
于 2012-06-20T20:32:27.353 に答える