當使用參數化查詢,你不需要包括任何分隔符在參數值中。只需使用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
使用時你並不需要一個參數化查詢到包括*任何*分隔符的參數值。只需使用'ps.setString(1,「」);'對我來說工作得很好。 –
同樣,即使需要傳遞引號,它也應該是單引號不加倍,所以:'containerRefNo =「''」;'這只是爲了澄清。 @GordThompson是完全正確的。 –
@GordThompson你應該添加一個答案。 –