2017-01-28 78 views
-1

我在JDBC中有一段代碼(在NetBeans IDE 8.1中工作),它不會從第二個結果集中提取數據。曾試圖通過幾個答案,但沒有解決到現在去........JDBC結果集相關

我寫的代碼粘貼如下:

protected void processRequest(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException { 
    response.setContentType("text/html;charset=UTF-8"); 
    Connection conn= null; 
    Statement stmt1= null; 
    Statement stmt2= null; 
    try (PrintWriter out = response.getWriter()) { 
     out.println("<!DOCTYPE html>"); 
     out.println("<html>"); 
     out.println("<head><title>Servlet test_servlet</title>"); 
     out.println("<link href=\"http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css\" rel=\"stylesheet\">"); 
     out.println("<script src=\"https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js\"></script>"); 
     out.println("<script src=\"http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js\"></script>"); 
     out.println("</head><body>"); 
     out.println("<div class=\"container-fluid\">"); 

     //Register Driver 
     out.println("<h5>Trying to register</h5>"); 
     Class.forName("oracle.jdbc.driver.OracleDriver"); 
     out.println("<h5>Registered successfully</h5>"); 

     //Open a connection 
     out.println("<h5>Trying to connect to the XE database...</h5>"); 
     conn=DriverManager.getConnection("jdbc:oracle:thin:@Toshiba:1521:xe","SYSTEM","oraclee"); 
     out.println("<h5>Connected Successfully</h5>"); 

     //Executing queries 
     stmt1=conn.createStatement(); 
     stmt2=conn.createStatement(); 

     String [] subj=new String[5]; 
     int i=0; 
     ResultSet rst1=stmt1.executeQuery("select * from TESTINGTABLE"); 
     while(rst1.next()){ 
      //int numb=rst.getInt(1); 
      subj[i]=rst1.getString("E_NAME").toString(); 
      out.println("Hello "+subj[i]); 
      out.println("<br>"); 
      i++; 
     } 
     rst1.close(); 

     ResultSet rst2=stmt2.executeQuery("select * from TESTTABLE"); 
     while(rst2.next()){ 
      String antt=rst2.getString(1).toString(); 
      out.println("Hi "+antt+"<br>"); 
     } 
     rst2.close(); 
     out.println("<h5>Result set object closed</h5>"); 
     stmt2.close(); 
     stmt1.close(); 
     out.println("<h5>Statement object closed</h5>"); 
     conn.close(); 
     out.println("<h5>Connection object closed</h5>"); 
     out.println("</div>"); 
     out.println("</body>"); 
     out.println("</html>"); 
    }catch(SQLException se){ 
     se.printStackTrace(); 
    }catch(Exception e){ 
     e.printStackTrace(); 
    } 
} 

它爲我提供的輸出是:

Trying to register 
Registered successfully 
Trying to connect to the XE database... 
Connected Successfully 
Hello Joe 
Hello Chris 
Hello James 
Hello Eve 
Hello Thomas 

它不顯示來自第二個結果集的數據。

我正在使用本程序中的兩個表在下面給出:

1>僅具有一個與5個值柱(E_NAME)TESTINGTABLE在它 喬,克里斯,詹姆斯,伊芙,托馬斯

2> TestTable的僅具有一個與它 瑪麗亞姆

+0

是否返回瑪麗亞姆如果從TestTable的第一選擇?我的意思是如果stmt1從TESTTABLE中選擇。 –

+0

請修改您的問題以獲得更具描述性的標題以及已打印的任何例外。 –

+1

我非常確定'''在''select * from TESTTABLE'''末尾會出現錯誤。你應該有一個例外的堆棧跟蹤 –

回答

2

在這種線1個值列(E_NAME):

ResultSet rst2=stmt2.executeQuery("select * from TESTTABLE'"); 
                 ^-- here 

嘗試刪除的SQL查詢的最後',因爲這

ResultSet rst2=stmt2.executeQuery("select * from TESTTABLE"); 
+0

即使它沒有顯示'Mariam' –