IAm*_*aja 8 java sql nullable jdbc prepared-statement
使用原始JDBC时,您可以参数化PreparedStatement如下:
PreparedStatement statement = connection.prepareStatement(someSQLString);
String someString = getSomeString();
Integer int = getSomeInteger();
statement.setString(1, someString);
statement.setLong(2, 5L);
statement.setInt(3, int);
...
Run Code Online (Sandbox Code Playgroud)
在这里,如果someString是null,那很好 - 字符串可以为空.但如果getSomeInteger()回归null,我们就有问题了.
PreparedStatement#setInt(int,int)将基元设置int为值,因此不能null.
但是,我可能希望上面第3列的值null适用于此特定记录,这是完全合理的.毕竟,我曾经使用的每个RDBMS都允许数字(INT,LONG等)字段为NULLABLE ...
那么解决方法是什么?
Lui*_*oza 18
不要使用其中任何一个setObject而是使用,让JDBC驱动程序来管理null值而不是你.
您可以使用该类的setNull(int parameterIndex,int sqlType)方法PreparedStatement.
以下是如何使用它的示例:
String query =
"insert into nullable_table(id,string_column, int_column) values(?, ?, ?)";
// create PrepareStatement object
PreparedStatement pstmt = connection.prepareStatement(query);
pstmt.setString(1, id);
pstmt.setNull(2, java.sql.Types.VARCHAR);
pstmt.setNull(3, java.sql.Types.INTEGER);
Run Code Online (Sandbox Code Playgroud)
从这里取的例子.