【问题标题】:JDBC resultset relatedJDBC 结果集相关
【发布时间】:2017-01-28 11:01:22
【问题描述】:

我在 JDBC 中有这段代码(在 NetBeans IDE 8.1 中使用),它没有从第二个结果集中提取数据。已经尝试过几个答案,但直到现在都没有解决方案............

我写的代码贴在下面:

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> TESTINGTABLE 只有一列 (E_NAME),其中包含 5 个值 乔、克里斯、詹姆斯、夏娃、托马斯

2> TESTTABLE 只有一列 (E_NAME),其中有 1 个值 玛丽亚姆

【问题讨论】:

  • 如果您先从 TESTTABLE 中选择,它是否返回 Mariam?我的意思是如果 stmt1 从 TESTTABLE 中选择。
  • 请编辑您的问题以获得更具描述性的标题,以及已打印出来的任何例外情况。
  • 我很确定"select * from TESTTABLE'" 末尾的' 会导致错误。你应该有一个异常的堆栈跟踪

标签: java database jdbc resultset


【解决方案1】:

在这一行:

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

尝试删除 SQL 查询中的最后一个 ',如下所示

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

【讨论】:

  • 即使那样它也没有显示'Mariam'
猜你喜欢
  • 2011-01-31
  • 2011-11-21
  • 1970-01-01
  • 2014-08-24
  • 1970-01-01
  • 2014-12-06
  • 2016-04-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多