1

以下のデータベースを作成しました

SqlResult := fDataBase.Exec("CREATE TABLE workstations (workstation string, location string, userId string);");

sqlite INSERT ステートメントで params をどのように使用しますか。

たとえば、私はそれがそのようなものになると思います

FDatabase.Exec("INSERT INTO workstations values(?,?,?);", [AWorkstation, ALocation, AUserId]);

ただし、 Exec は文字列しか取りません....だから、パラメータを含めるために実際に文字列全体を構築する必要がありますか?

FDatabase.Exec("INSERT INTO workstations values( + AWorkstation + ',' + ALocation + ',' +  AUserId +');" );

私が尋ねる理由は、

TSQLiteDatabase には、を返す CreateStatement 関数があります。

TSQLiteStatement クラス

SQL & Params プロパティを持つ

および次のメソッド

準備 実行 リリース

データベースの exec を呼び出す代わりに、createstatement を実行し、sql と params を割り当ててから実行しますか?

例えば

stm:= fDatabase.CreateStatement;
stm.SQL:= ?
stm.Params:=  ?
stm.execute;

私も試してみました

FDatabase.Exec('INSERT INTO workstations (workstation, location, userid) values(' + AWorkstation + ',' + ALocation + ',' +  AUserId +');');

値をハードコードすると、これは機能します

FDatabase.Exec("INSERT INTO workstations (workstation, location, userid) values('WS0202', 'Maintenance', 'jdoe');");

しかし、私はparamsを使用できるようにする必要があります

フォーマット機能でも試してみましたが、まだ機能しません

FDatabase.Exec(Format("INSERT INTO workstations (workstation, location, userid) values(%s ,%s, %s );", [AWorkstation, ALocation, AUserId]));
4

1 に答える 1