Java Null数据库列在resultSet上变为零
我不能给你看我的数据库结构。。。但我可以试着做一个例子:Java Null数据库列在resultSet上变为零,java,oracle,jdbc,Java,Oracle,Jdbc,我不能给你看我的数据库结构。。。但我可以试着做一个例子: Table Car_Manufacturer ( car_id NUMBER; manuFacturer_id NUMBER; ) 价值观: |TABLE CAR_MANUFACTURER | | CAR_ID |MANUFACTURER_ID | | 1 | 1284 | | 2 | (null) | 选择my resultSet接收的内容: select * f
Table Car_Manufacturer
(
car_id NUMBER;
manuFacturer_id NUMBER;
)
价值观:
|TABLE CAR_MANUFACTURER |
| CAR_ID |MANUFACTURER_ID |
| 1 | 1284 |
| 2 | (null) |
选择my resultSet接收的内容:
select * from CAR_MANUFACTURER where car_id = 2
我可以拿到车号:
int id = rs.get("car_id");
id值的输出:
2
但是,当我尝试获取制造商ID时,空值变为整数:
Integer manId = rs.get("manufacturer_id");
输出manId
0
有什么想法吗?我需要得到空值。。。不是整数值。请在此处检查接受的答案:
它为您提供了一种方法,可以知道在调用rs.getXXX时读取的值是否为null并默认为某个值。如果您遇到重复的值,则应将其标记(或关闭投票)为重复,而不是发布实质上指向重复问题的答案。对我来说不适用。。。因为,当制造商ID包含任何值时,rs.wasNull返回TRUE。@CleitonRibeiro正确的询问顺序是
rs.getInt(“制造商ID”);rs.wasNull()代码>(在获取列值后立即执行)。如果这不起作用,那么它就是JDBC驱动程序中的一个bug。我正是这样做的。。。但我用的是rs。getLong@CleitonRibeiro这也应该行得通。确保您使用的是最新版本的Oracle JDBC驱动程序。否则你可能不得不使用getObject
。。。这个解决方案对我不起作用。