2017-12-04 13 views
1

私はあなたがsqliteのINSERT文でのparamsを使用するにはどうすればよい次のデータベースSmart Mobile Studioのsqlite INSERTステートメントでparamsを使用しますか?

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

を作成しました。

は例えば、私はそのような

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

ようなものになるだろうと仮定しかし、Execは文字列のみを取る........ので、私は実際に含まれるように、文字列全体を構築する必要がありますパラーム?私が尋ねる

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

理由は、

TSQLiteDatabaseが

TSQLiteStatementクラスSQL & Paramsプロパティ

を持って

と次に返すのcreateStatement機能を有していることですメソッド

は、私が代わりにデータベースexecを呼び出すので、私は代わりに、のcreateStatementを行うSQLとのparamsを割り当て、その後、実行しますか? リリース

を実行する準備

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

は、私も、私は値をハードコードした場合、これは

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

を動作しますが、

もそれを試してみましたPARAMS私が使用できるようにする必要が

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

を試してみましたフォーマット機能を使用しても動作しません。

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

答えて

0
FDatabase.Exec(Format("INSERT INTO workstations (workstation, location, userid) values('%s' ,'%s', '%s');", [AWorkstation, ALocation, AUserId])); 
関連する問題