mysql jdbc:
resultSet.getInt(index)
Run Code Online (Sandbox Code Playgroud)
为 NULL 返回 0,因为它的返回类型是 int,而不是 java.lang.Integer。但
resultSet.getObject(index, java.lang.Long)
Run Code Online (Sandbox Code Playgroud)
为空返回 0。它应该返回NULL。对?检查结果集的列类型,列类型为java.lang.Long。它应该返回空值,但为空值返回 0。
检查 Oracle 11g:它按预期返回 null。
来自 JDBC 4.3 规范:
当在数据库中的列的值是SQL
NULL,它可以返回到Java应用程序为null,0,或false,根据列值的类型。映射到 JavaObject类型的列值 作为 Java 返回null;那些映射到数字类型的返回为0;那些映射到 Javaboolean的将作为false. 因此,可能需要调用该wasNull方法来确定检索到的最后一个值是否为 SQLNULL。
不幸的是,措辞含糊不清,可以解释为如果它是数字类型,则getObject可能会返回,但这不是本意。0NULL
JDBC 1.20 规范对此更加清晰:
当您使用 ResultSet.getXXX 方法之一读取 SQL “NULL”时,您将收到:
- 返回 Java 对象的那些 getXXX 方法的 Java“空”值。
- getByte、getShort、getInt、getLong、getFloat 和 getDouble 的零值
- getBoolean 的假值。
换句话说,getObject应该返回null带有NULL值的整数列。
这是通过的文件进一步支持getObject(int/String)(这也适用于getObject(int/String, Class):
如果值为 SQL
NULL,则驱动程序返回 Javanull。
| 归档时间: |
|
| 查看次数: |
1376 次 |
| 最近记录: |