我找不到正确的语法-我试图将列匹配为空字符串,而不是空字符串。我试着用单双引号将字符串分隔成很多种方式。
containerRefNo = "\"\"";
ps = getConnection().prepareStatement(
"delete from inumber_join where container_no = ?");
我收到的错误是
您的SQL语法有错误;请检查与您的MariaDB服务器版本相对应的手册,以获取在“from inumber_join where container_no=”附近使用的正确语法
最佳答案
使用参数化查询时,不需要在参数值中包含任何分隔符。简单地使用ps.setString(1, "");
对我很好。
也就是说。。。
// setup
try (Statement st = conn.createStatement()) {
st.executeUpdate(
"CREATE TEMPORARY TABLE inumber_join_temp (" +
"id INT AUTO_INCREMENT, " +
"container_no VARCHAR(10) NULL, " +
"PRIMARY KEY (id)" +
")");
st.executeUpdate(
"INSERT INTO inumber_join_temp (container_no) " +
"VALUES (null), (''), (null), (''), (null)");
}
// test
String sql =
"SELECT COUNT(*) AS n " +
"FROM inumber_join_temp " +
"WHERE container_no = ?";
try (PreparedStatement ps = conn.prepareStatement(sql)) {
ps.setString(1, ""); // search for empty string
try (ResultSet rs = ps.executeQuery()) {
rs.next();
System.out.println(rs.getInt(1));
}
}
... 回报
2