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

时间:2015-09-17 09:13:09

标签: java sql oracle jdbc resultset

我正在尝试打印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.

有人可以告诉我这是什么问题吗? 提前谢谢。

2 个答案:

答案 0 :(得分:5)

s.executeQuery已经返回一个ResultSet,你应该使用它,而不是随后调用s.getResultSet()JavaDoc上的{{3}}也表示第二次调用将返回null。我很惊讶您没有在rs1.next()上获得NullPointerException。

另外,从小方面来看,通常最好将Connection和Statement变量移到try-catch块之外并在finally块中关闭它们,或者使用Java 7 try-with - 资源建设。

答案 1 :(得分:-3)

首先可以从resultSet中提取数据到变量然后输出变量吗?

例如:

String variable1 = rs1.getString("tno1")
......................................
String variable5 = rs1.getString("ac2")
System.out.println(variable1);
......................................
System.out.println(variable5);