getInt方法不从数据库表返回值

时间:2014-06-29 00:48:01

标签: java jdbc plsql

我有一个像这样定义的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();

如果您知道为什么会这样,我将非常感谢您的帮助?

2 个答案:

答案 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";