Java中执行Oracle查询后在Eclipse控制台无法输出正确结果求助
问题解决:Java执行Oracle查询返回0/1而非实际数据
错误根源:你调用的
executeUpdate()方法是用于执行INSERT/UPDATE/DELETE这类修改数据的SQL语句,它的返回值是SQL执行后受影响的行数,所以才会输出0或1这类数字。执行查询语句必须使用executeQuery()方法,它会返回包含查询结果的ResultSet对象,通过这个对象才能读取数据库中的实际数据。修正后的代码示例:
ConnectTodb db = new ConnectTodb("password"); db.connect(); Statement stmt = db.getStatement(); // 执行查询获取结果集 ResultSet rs = stmt.executeQuery("SELECT * FROM (select entry, row_number() over(order by entrie_date desc) rn from entry) where rn = 1"); // 遍历结果集读取数据 while (rs.next()) { // 根据列的实际数据类型选择对应get方法,这里假设entry是数值类型 BigDecimal entryValue = rs.getBigDecimal("entry"); int rn = rs.getInt("rn"); System.out.println("entry: " + entryValue + ", rn: " + rn); } // 记得关闭数据库资源(实际开发中建议用try-with-resources自动关闭) rs.close(); stmt.close(); db.close();
- 额外注意事项:
- 要根据数据库列的实际数据类型选择合适的
ResultSet获取方法,比如字符串用getString()、整数用getInt()、高精度小数用getBigDecimal(),避免类型不匹配导致的错误。 - 数据库连接、Statement、ResultSet等资源使用后必须关闭,防止连接泄漏,推荐使用Java的try-with-resources语法,能自动关闭实现了AutoCloseable接口的资源。
- 要根据数据库列的实际数据类型选择合适的
内容的提问来源于stack exchange,提问作者singhKirat
相关产品推荐
相关产品推荐

