投稿日時:

さっそくだが下記のソースコードを見てみましょう。
VBA(VB6.0)のソースコードである。

Dim var As Long
var = 10
MsgBox “変数の値はvar”

これだと実行結果は「変数の値はvar」と出力されます。
「変数の値は10」と出力するためには、下記のように記述します。

MsgBox “変数の値は” & var

どのプログラミング言語でもそうですが、変数と文字列の結合に悪戦苦闘する初心者の方は多くいらっしゃいます。
SQLが絡むと特に、難しく感じてしまうようです。

Dim key As Long
key = 10
Dim sql As String
sql = “SELECT * FROM table WHERE field = key”

これだとSQLは「SELECT * FROM table WHERE field = key」になってしまいます。
「SELECT * FROM table WHERE field = 10」とするには下記のように記述します。

sql = “SELECT * FROM table WHERE field = ” & key

落ち着いてソースコードを整理してみましょう。
どこまでが引用符で括られている文字列で、どこまでが変数なのかを認識する事が重要です。

では少し複雑なSQLの事例をひとつ。
「SELECT * FROM table WHERE field = ‘abc’」とするには下記のように記述します。

Dim key As String
key = “abc”
Dim sql As String
sql = “SELECT * FROM table WHERE field = ‘” & key & “‘”

いかがでしょうか?
理解しづらいのなら、実際にソースコードを記述して、MsgBoxなりDebug.Printなりで変数sqlを出力して確認してみてくださいね。

どのプログラミング言語でどのRDBMSを操作するにも、このようなSQLを組み合わせる技術は必須となります。
将来的にはSQLインジェクション対策を考慮したり、プレースホルダ(パラメータ)を使用したりする事になりますが、まずはこの程度の基礎からできるようになることを目指しましょう。

(担当:奥田 英太郎)