web-dev-qa-db-ja.com

PreparedStatement setNull(..)

Java PreparedStatementは、Null値を明示的に設定する可能性を提供します。この可能性は次のとおりです。

prepStmt.setNull(parameterIndex, Types.VARCHAR);

この呼び出しのセマンティクスは、nullパラメーターで特定のsetTypeを使用する場合と同じですか?

prepStmt.setString(null);

77
paweloque

この ガイド の意味:

6.1.5 JDBC NULLをINパラメーターとして送信する

SetNullメソッドを使用すると、プログラマはJDBC NULL(汎用SQL NULL)値をINパラメーターとしてデータベースに送信できます。ただし、パラメーターのJDBCタイプを指定する必要があることに注意してください。

Java null値がsetXXXメソッドに渡される場合(引数としてJavaオブジェクトを使用する場合)。JDBCNULLもデータベースに送信されます。ただし、setObjectメソッドは、JDBCタイプが指定されている場合にのみnull値を取ることができます。

はい、それらは同等です。

66
djna

しかし、これに注意してください....

Long nullLong = null;

preparedStatement.setLong( nullLong );

-NULLポインター例外を処理します-

プロタイプは

setLong( long )   

ない

setLong( Long )

ええ、あなたを捕まえるのにいいものです。

69
Owen

最後に小さなテストを行いましたが、プログラミング中に、setNull(..)メソッドがなければJavaプリミティブにnull値を設定する方法はないということに気付きました。オブジェクトの両方の方法

setNull(..)

そして

set<ClassName>(.., null)) 

同じように振る舞います。

13
paweloque

preparedStatement.setObject(index,value,type);の使用も検討できます

6
bithom