LIKE %?%は間違いです | Javaプログラミング初心者のためのページ

LIKE %?%は間違いです

JDBCのよくある間違い

よくある度:★★★★☆

状況:PreparedStatement使用時


・ LIKE %?%は間違いです

LIKEでワイルドカード指定するとき、%はsetStringメソッドの引数で指定します。


例:名前に山のつく従業員を検索する

■失敗例

String sql = "SELECT * FROM EMP WHERE NAME LIKE %?%";

PreparedStatement stmt = con.prepareStatement(sql);

stmt.setString(1, "");

では検索できません。


■成功例

String sql = "SELECT * FROM EMP WHERE NAME LIKE ?";

PreparedStatement stmt = con.prepareStatement(sql);

stmt.setString(1, "%山%");