Watch, Follow, &
Connect with Us

Please visit our new home
community.embarcadero.com.


Welcome, Guest
Guest Settings
Help

Thread: ExecSQLで変数を使う場合の書き方について



Permlink Replies: 3 - Last Post: Jan 1, 2017 5:50 PM Last Post By: Hideyuki Oya
Hideyuki Oya

Posts: 87
Registered: 6/6/07
ExecSQLで変数を使う場合の書き方について
Click to report abuse...   Click to reply to this thread Reply
  Posted: Jan 1, 2017 3:14 AM
あけましておめでとうございます。
旧年中はありがとうございました。
今年もよろしくお願いしますm(._.)m。

今SQLiteを使うプログラムを作成しています。
ExecSQLでデータ(変数)を挿入しようとしていますが、うまくいきません。
どう書いたらいいのでしょうか?
date、start、end、numberが変数です。
なお、固定の文字列の挿入はうまくできています。

    FDQuery1.ExecSQL('insert into table1 values "date", "start", "end", "number")'); //シングルクオート内部でダブルクオート使用 書き込まれるのは文字列のまま(文字列date,start,end,numberが書き込まれる)
 
FDQuery1.ExecSQL('insert into table1 values ''date'', ''start'', ''end'', ''number'')'); //シングルクオートだけ使用 書き込まれるのは文字列のまま
 


なお、一番外側にダブルクオートを使うとintoにエラーが出ます。
igy kk

Posts: 147
Registered: 9/11/03
Re: ExecSQLで変数を使う場合の書き方について
Click to report abuse...   Click to reply to this thread Reply
  Posted: Jan 1, 2017 3:50 AM   in response to: Hideyuki Oya in response to: Hideyuki Oya
試してませんが、

FDQuery1.ParamByName('number').AsInteger := 変数や値をここで指定;
FDQuery1.ParamByName('date').AsDateTime := 変数や値をここで指定;
FDDuery1.ParamByName('start').AsXXXXXXX := 変数や値をここで指定; // XXXXXXXの部分は、適切なものを指定
FDDuery1.ParamByName('end').AsXXXXXXX := 変数や値をここで指定; // XXXXXXXの部分は、適切なものを指定
FDQuery1.ExecSQL('insert into table1 values (:date, :start, :end, :number)')

のような感じで指定するのは、いかがですか?
Takashi YAMAMOTO

Posts: 9
Registered: 12/26/01
Re: ExecSQLで変数を使う場合の書き方について
Click to report abuse...   Click to reply to this thread Reply
  Posted: Jan 1, 2017 4:24 PM   in response to: Hideyuki Oya in response to: Hideyuki Oya
パラメータを取るクエリを実行を実行したいのであれば、次のような構文になります。

FDQuery1.ExecSQL('insert into testtab values (:id, :name)', [1, 'FireDAC']);


参考: [コマンドの実行(FireDAC) - RAD Studio|http://docwiki.embarcadero.com/RADStudio/Berlin/ja/%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%AE%E5%AE%9F%E8%A1%8C%EF%BC%88FireDAC%EF%BC%89]
Hideyuki Oya

Posts: 87
Registered: 6/6/07
Re: ExecSQLで変数を使う場合の書き方について
Click to report abuse...   Click to reply to this thread Reply
  Posted: Jan 1, 2017 5:50 PM   in response to: Takashi YAMAMOTO in response to: Takashi YAMAMOTO
Takashi YAMAMOTO wrote:
パラメータを取るクエリを実行を実行したいのであれば、次のような構文になります。

FDQuery1.ExecSQL('insert into testtab values (:id, :name)', [1, 'FireDAC']);


参考: [コマンドの実行(FireDAC) - RAD Studio|http://docwiki.embarcadero.com/RADStudio/Berlin/ja/%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%AE%E5%AE%9F%E8%A1%8C%EF%BC%88FireDAC%EF%BC%89]

Takashi YAMAMOTO さん、ありがとうございます。
やっと構文の意味が分かりました。
SQLite側のコラム名?の右側に:を付けるわけですね。
(Delphi側の変数名と勘違いしていました)

あと、テーブル名も変数にしたいのですが、どうすればいいのでしょうか?
Legend
Helpful Answer (5 pts)
Correct Answer (10 pts)

Server Response from: ETNAJIVE02