Java ResultSet 为空但实际上不应该为空

标签 java sql oracle jdbc resultset

我正在尝试打印结果集,但它没有打印任何内容。有人可以告诉我有什么问题吗? 我使用的是 Oracle 11g、JDK 1.7 和 ojdbc6.jar。 提前致谢。 我执行的代码如下。

import java.sql.*;
public class database  {   
public static void main( String args[]){
    System.out.println("---Connecting to Oracle---");
    try{
        Class.forName("oracle.jdbc.driver.OracleDriver");
    }
    catch( ClassNotFoundException e){
        System.out.println( e );
    }
    System.out.println("---JDBC Registered---");
    String URL = "jdbc:oracle:thin:admin/nihtij34@localhost:1521:XE";
    String user = "admin";
    String pwd = "nihtij34";
    try{
         Connection con = DriverManager.getConnection(URL,user,pwd);
         Statement s = con.createStatement();
         s.executeQuery ("select * from seat  where doj= '1-01-2016' ");
         System.out.println("---QUERY EXECUTED---");
         ResultSet rs1 = s.getResultSet();
         while(rs1.next()){
             System.out.println( rs1.getString("tno"));
             System.out.println( rs1.getString("doj"));
             System.out.println( rs1.getString("sl"));
             System.out.println( rs1.getString("ac3"));
             System.out.println( rs1.getString("ac2"));
         }
         s.close();
         con.close();
    }
    catch(SQLException e){
        System.out.println(" NOT CONNECTED\n"+e);
    }           
} 
}

我得到的输出如下:

---Connecting to Oracle---
---JDBC Registered---
---QUERY EXECUTED---

我在 Oracle 中尝试了查询,它返回了以下结果。

SQL> select * from seat where doj='1-01-2016';

   TNO DOJ                SL        AC3        AC2
---------- ---------- ---------- ---------- ----------
 11042 1-01-2016          10         10         10
 12163 1-01-2016          10         10         10
 12321 1-01-2016          10         10         10
 12322 1-01-2016          10         10         10
 12323 1-01-2016          10         10         10
 12324 1-01-2016          10         10         10
 12615 1-01-2016          10         10         10
 12616 1-01-2016          10         10         10
 12841 1-01-2016          10         10         10
 12842 1-01-2016          10         10         10
 12951 1-01-2016          10         10         10

   TNO DOJ                SL        AC3        AC2
---------- ---------- ---------- ---------- ----------
 12952 1-01-2016          10         10         10

12 rows selected.

有人可以告诉我出了什么问题吗? 提前致谢。

最佳答案

s.executeQuery已经返回一个ResultSet,您应该使用它,而不是随后调用s.getResultSet()JavaDoc这也表明第二次调用将返回 null。我很惊讶您在 rs1.next() 上没有收到 NullPointerException。

另外,顺便说一句,将 Connection 和 Statement 变量移到 try-catch block 之外并在 finally block 中关闭它们,或者使用 Java 7尝试使用资源构建。

关于Java ResultSet 为空但实际上不应该为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32626587/

相关文章:

java - Ant/JUnit - 如何断言包依赖项/非依赖项?

sql - ROWNUM 作为 T-SQL 中等效的伪列?

sql - 使用 dplyr::left_join (R lang) 与 SQL LEFT JOIN 处理 NA/NULL 的差异

oracle - Weblogic 部署异常 : PaddingException: Could not perform unpadding: invalid pad byte

java - 未使用 appendReplacement 替换模式

java - 按下按钮但未到达单击事件时应用程序崩溃

java - 如何将jchart转换为csv格式

mysql - 通过VLOOKUP清理SQL查询中的数据

database - 以数据库用户身份登录 Oracle Application Express

java - 无法使用java更新oracle数据库中的数据