以下のデータベースを作成しました
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]));