音ゲー、fps、DTM、プログラミング雑記置き場

ブログタイトル通りに雑記を垂れ流す。

【プログラミング雑記】文字列リテラルでSQLクエリ生成させる際は半角スペースを入れろ

  • 表題の通り。下記VB6ソースは実行時にDB側でSQLエラーとなる
'NG
Dim query As String
query = "SELECT"
query = query & "colA"
query = query & "FROM"
query = query & "tableA"
  • 理由はあたりまえで変数queryがSELECTcolAFROMtableAとなり
    ステートメントカラム名等の区別がつけられず
    SQLクエリとしてDB側が認識できない。
  • 上記のようなソースは半角スペースを両端に入れてガードする。
'OK
Dim query As String
query = " SELECT "
query = query & " colA "
query = query & " FROM "
query = query & " tableA "
  • こんなん実行すれば気づけるけど、テスト実施者が別だったりとか諸々で
    この作業を忘れたころにエラーですと言われた場合
    調査ハマる可能性もあるので念のため残しておく。

  • レガシーシステム負の遺産を許すな

TODO

  • 今回のようなソース保守を任せれた場合どう自衛するか。
  • クエリベタ打ちにならない仕組みを考える>Enumとかで定数化する