[英]Java PreparedStatement setting NULL parameters
Java PreparedStatement允許您為給定參數設置值或將其設置為NULL
SELECT *
FROM ADDRESS
WHERE ADDRESS_LINE1 = ?
因此我們可以編寫代碼來設置此參數:
if (addressLine1 != null) {
preparedStatement.setString(1, addressLine1);
} else {
preparedStatement.setNull(1, VARCHAR);
}
但是,還聲明您永遠不要使用=運算符將值與null進行比較,而應將IS運算符實際用於null比較。
准備好的語句實際上是在這里的掩體下將IS的=運算符交換為IS還是只是仍使用=運算符插入的null? 如果是后者,那么什么時候使用它才有用呢?您實際上得到了預期的結果嗎?
我在下面的堆棧溢出問題的后面問這個
不,准備好的語句不會將=
換成IS
。 您的代碼對此負責。 就像您將負責使用字something = NULL
而不是something IS NULL
進行查詢一樣。
能夠將其設置為null的目的是用於例如update或insert語句,或者在您正確使用的情況下is
或is distinct from
。
它也用於空條件檢查,例如where ? is null or something = ?
where ? is null or something = ?
與
String something = "xyz"; // or String something = null;
statement.setString(1, something);
statement.setString(2, something);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.