Java getInt方法没有从数据库表返回值

Java getInt方法没有从数据库表返回值,java,jdbc,plsql,Java,Jdbc,Plsql,我有一个oracle表,定义如下: create table image_table_test (id number primary key, image ordsys.ordimage); 当我尝试在该表中选择最大ID值并在java变量中返回它时,使用下面的代码,它返回一个零值,但表中的值设置为1。rsx.getIntID;方法没有从表返回整数值 我的表格在执行时,从图像_table_test;中选择MAXID作为ID: 我的java代码: Statement stmt; try{

我有一个oracle表,定义如下:

create table image_table_test (id number primary key, image ordsys.ordimage);
当我尝试在该表中选择最大ID值并在java变量中返回它时,使用下面的代码,它返回一个零值,但表中的值设置为1。rsx.getIntID;方法没有从表返回整数值

我的表格在执行时,从图像_table_test;中选择MAXID作为ID:

我的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();

如果您知道发生这种情况的原因,我将非常感谢您的帮助。

由于您没有获取ID列,我将其更改为:

maxIdNum = rsx.getInt(1);
而不是:

maxIdNum = rsx.getInt("ID");
我还将查询更改为:

String maxIdSQL = "SELECT MAX(ID) FROM image_table_test"; 

您的代码还可以,但我不信任您的查询结果

尝试在maxIdNum上设置负值,以查看是否从查询中获得结果

int maxIdNum = -1;
您可以做的另一个测试是替换rsx.getIntID;通过rs.getStringID;要知道结果是否是字符串,在int的情况下它将失败,因此将帮助您隔离问题

您可以做的另一件事是使用硬编码结果设置查询,以了解是否存在其他问题:

select 1 as ID from dual

可能是由于某种原因,查询失败了,您得到了在声明变量时设置的默认值。我声明了一个try-and-catch块,它没有引发异常。所以我认为这个查询没有失败。相同的查询直接在服务器上执行得很好。是否尝试从数据库中获取最后插入的id?如果是,那么在交易方面,这不是正确的方式。请。请检查您的Java代码是否连接到预期的数据库。我确实尝试了此操作,但它仍然返回0。如果我将变量设置为-1,它仍然返回0。@eror404我更新了答案。添加我添加的查询以检查其是否有效。这将帮助您了解问题所在。这将返回一个,一定是查询,但我看不出有什么问题。TNX由于某些原因,大写字母在java中不起作用。若我以小写形式执行它:从image\u table\u test中选择maxID作为ID,那个么它就工作了。反对从image_table_test中选择MAXID作为ID;我在那上面浪费了3个小时。那简直太愚蠢了。
select 1 as ID from dual