Java PreparedStatementは、Null値を明示的に設定する可能性を提供します。この可能性は、次のとおりです。PreparedStatement setNull(..)
prepStmt.setNull(<n>, Types.VARCHAR)
は、NULL値ではsetTypeを使用したときと同じこの呼び出しの意味はありますか?
prepStmt.setString(null)
?
Java PreparedStatementは、Null値を明示的に設定する可能性を提供します。この可能性は、次のとおりです。PreparedStatement setNull(..)
prepStmt.setNull(<n>, Types.VARCHAR)
は、NULL値ではsetTypeを使用したときと同じこの呼び出しの意味はありますか?
prepStmt.setString(null)
?
このguideは言う:INパラメータとしてJDBC NULLを送信
6.1.5
setNullメソッドは、プログラマがINとしてデータベースにJDBC NULL(総称SQL NULL)値を送信することができますパラメータ。ただし、引き続きパラメータのJDBCタイプを指定する必要があることに注意してください。
Java NULL値がsetXXXメソッドに渡されると(JDBCオブジェクトが引数としてJavaオブジェクトを受け取る場合)、JDBC NULLもデータベースに送信されます。ただし、setObjectメソッドは、JDBCタイプが指定されている場合にのみ、NULL値を取ることができます。
最後に私は小さなテストを行いました。プログラミングしていたときにsetNull(..)メソッドがなければ、Javaプリミティブにnull値を設定する方法はありませんでした。オブジェクトの両方の方法
setNull(..)
と
set<ClassName>(.., null))
は同じように振る舞います。
が、これに気を付ける....
Long nullLong = null;
preparedStatement.setLong(nullLong);
はPROTYPEが
setLong(Long)
素敵
setLong(long)
されていないため、exception-
NULLポインタを-thows 1つはあなたをキャッチするええ。
preparedStatement.setObject(index,value,type);
+1:面白いと思うかもしれません。私はそれがsetXXXがnullsで動作する方法だと仮定しましたが、実際にそれをテストしたり、ドキュメントを読むことは決してありませんでした。 – Powerlord
myPreparedStatement.setInteger(myIntegerObject)のようなものはないと思いますが(正確なメソッド名は存在しませんが)、潜在的にnullの整数を使用したい場合です。それ以外の場合は、if/elseステートメントを使用して、.setInt()メソッドと.setNull()メソッドを別の方法で呼び出す必要があります。これはちょっと面倒です。 –
@ardave、はい、それは私の最終段落の意味です – djna