如何从结果集对象返回多行以发送servlet

时间:2017-04-11 06:39:24

标签: java servlets

我有一个类从数据库中检索行数但是在这里我将结果集对象返回到servlet类并且基于我需要在表中显示的那些行,当我检索表时它只显示单行但是当我执行相同的查询时它显示在数据库中有两行可能是我没有正确返回结果集对象任何人都可以帮助我从数据库中检索所有所有记录。

Servlet:

 WorkAreaClass wa=new WorkAreaClass();            
               ResultSet resultSet = wa.workarea(User);        
                if(resultSet.next())
                {                   
                 table(resultSet,out);              
                }   

3 个答案:

答案 0 :(得分:2)

在开始迭代结果集之前,您正在调用if(resultSet.next())。之后,你将在第一排。然后,当您输入while(rs.next())循环时,光标将移动到第二个行。

您可以将while循环转换为do-while,但不会跳过第一行。

答案 1 :(得分:0)

假设@kayaman解决方案是正确的。

只是你的桌子应该是这样的。

public int table( ResultSet rs, PrintWriter out)throws Exception
    {
        int rowcount=0;
        out.println("<P ALIGN='center'><TABLE BORDER=1>");
        ResultSetMetaData rsmd = rs.getMetaData();
        int columnCount = rsmd.getColumnCount();
        // table header
         out.println("<TR>");
         for (int i = 0; i < columnCount; i++) {
               out.println("<TH>" + rsmd.getColumnLabel(i + 1) + "</TH>");
        }
         out.println("</TR>");
        // the data

        do { 
             rowcount++;
             out.println("<TR>");
             for (int i = 0; i < columnCount; i++) {                
                  out.println("<TD>" + rs.getString(i + 1) + "</TD>");              
             }           
             out.println("</TR>");  
        } while(rs.next());

        out.println("</TABLE></P>");        
        return rowcount;
    }

答案 2 :(得分:0)

您需要使用JDBCRowSet https://docs.oracle.com/javase/tutorial/jdbc/basics/jdbcrowset.html 这是简短的演示:

Statement stmt = con.createStatement(
           ResultSet.TYPE_SCROLL_SENSITIVE,
           ResultSet.CONCUR_UPDATABLE);
ResultSet rs = stmt.executeQuery("select * from COFFEES");
JdbcRowSetImpl jdbcRs = new JdbcRowSetImpl(rs);