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, "%山%");