へー、IS NOT FALSEと? こんな書き方もできるのか。覚えておこう。
PreparedStatementを使うだけなら、if文バリバリツギハギSQLで、プレースホルダの数が不定でも使える。プレースホルダに対応する変数をArrayListにぶち込んで、後で順番にsetObjectするだけ。
Object[] o = list.toArray(); for (int i = 0; i < o.length; i++) { if (o[i] != null) { stmt.setObject(i+1, o[i]); } else { stmt.setNull(i+1, Types.OTHER); } }
この方法はJDBCドライバによっては全然ダメ。
先日の価格.comのクラックは、SQLインジェクションを使った侵入だったらしい。SQLインジェクションには、PreparedStatementが有効。クラスライブラリの機能は上手く利用したい。