Java PreparedStatement は、Null 値を明示的に設定する可能性を提供します。この可能性は次のとおりです。
prepStmt.setNull(parameterIndex, Types.VARCHAR);
この呼び出しのセマンティクスは、null パラメータで特定の setType を使用する場合と同じですか?
prepStmt.setString(null);
?
Java PreparedStatement は、Null 値を明示的に設定する可能性を提供します。この可能性は次のとおりです。
prepStmt.setNull(parameterIndex, Types.VARCHAR);
この呼び出しのセマンティクスは、null パラメータで特定の setType を使用する場合と同じですか?
prepStmt.setString(null);
?
しかし、これに気をつけてください....
Long nullLong = null;
preparedStatement.setLong( nullLong );
-ヌルポインタ例外が発生-
なぜならプロトタイプは
setLong( long )
いいえ
setLong( Long )
あなたを捕まえるのにいいものです。
このガイドには次のように書かれています。
6.1.5 IN パラメータとしての JDBC NULL の送信
setNull メソッドを使用すると、プログラマは JDBC NULL (汎用 SQL NULL) 値を IN パラメータとしてデータベースに送信できます。ただし、パラメータの JDBC タイプを指定する必要があることに注意してください。
Java null 値が setXXX メソッドに渡された場合 (Java オブジェクトを引数として取る場合)、JDBC NULL もデータベースに送信されます。ただし、メソッド setObject は、JDBC タイプが指定されている場合にのみ null 値を取ることができます。
はい、それらは同等です。
最後に小さなテストを行い、プログラミングを行っているときに、setNull(..) メソッドがなければ Java プリミティブに null 値を設定する方法がないことに気づきました。双方向のオブジェクトの場合
setNull(..)
と
set<ClassName>(.., null))
同じように振る舞います。