我有一个像这样定义的oracle表:
create table image_table_test (id number primary key, image ordsys.ordimage);
当我尝试在该表中选择最大ID值并在java变量中返回它时,使用下面的代码,它返回一个零值,但表中的值设置为1. rsx.getInt("ID");
方法不会从表中返回一个整数值。
我的表当我执行SELECT MAX(ID) as ID FROM image_table_test;
时:
ID
1
我的java代码:
Statement stmt;
try{
stmt = conn.createStatement();
String maxIdStr = "";
int maxIdNum = 0;
String maxIdSQL = "SELECT MAX(ID) as ID FROM image_table_test";
ResultSet rsx = stmt.executeQuery(maxIdSQL);
while(rsx.next()){
maxIdNum = rsx.getInt("ID"); // Here the value is passed as 0
}
maxIdNum = maxIdNum + 1;
maxIdStr = Integer.toString(maxIdNum);
System.out.println(maxIdStr);
rsx.close();
stmt.close();
如果您知道为什么会这样,我将非常感谢您的帮助?
答案 0 :(得分:1)
您的代码没问题,但我不相信您的查询结果。
尝试在maxIdNum上设置一个负值,看看您是否从查询中获得了结果。
int maxIdNum = -1;
您可以做的另一项测试是将rsx.getInt("ID");
替换为rs.getString("ID");
以了解结果是否为字符串,如果是int则会失败,这样可以帮助您找出问题。
您可以做的另一件事是设置一个带有硬编码结果的查询,以了解是否还有其他问题:
select 1 as ID from dual
答案 1 :(得分:0)
由于您没有获取ID列,我将其更改为:
maxIdNum = rsx.getInt(1);
而不是:
maxIdNum = rsx.getInt("ID");
我还将查询更改为:
String maxIdSQL = "SELECT MAX(ID) FROM image_table_test";