java.sql.SQLException:结果集开始之前[重复]

Posted

技术标签:

【中文标题】java.sql.SQLException:结果集开始之前[重复]【英文标题】:java.sql.SQLException: Before start of result set [duplicate] 【发布时间】:2014-11-10 20:06:15 【问题描述】:

我在从mysql 数据库中获取数据时遇到问题。我的代码如下:

        try 
        Connection con = datasource.getConnection();
        Statement stmt = con.createStatement();

        ResultSet rs;
        rs = stmt.executeQuery("SELECT tittle,date,path " +
                "FROM announcement "+
                "ORDER BY date");
        String tittle=rs.getString("tittle");
        String date=rs.getString("date");
        String text=rs.getString("path");


     if (!rs.isBeforeFirst())
     
        out.println("<p>No data !</p>");
    
     else
                 
        out.println("<table class=\"data\">");
        out.println("<tr ><td class=\"sectionheader\"> tittleς</td><td            class=\"sectionheader\">date</td><td class=\"sectionheader\">text</td></tr>");

        while (rs.next()) 
            String row="";
            row  += "<td><a href=\"\"> "+tittle+ "</td>";
            row  += "<td>" + date + "</td>";
            row +="<td>"+text+"</td>";

            row +="</tr>";
            out.println(row);

        

我得到的错误是"java.sql.SQLException: Before start of result set" 我做错了什么的任何提示?

提前谢谢你。

【问题讨论】:

您面临的问题是什么?顺便说一句,它的标题不是标题 我在标题中得到错误:java.sql.SQLException:在结果集开始之前 这是因为您试图在集合的第一个结果之前获取。请参阅 Rp- 的答案。 【参考方案1】:

您通过游标访问 ResultSet 对象中的数据。最初光标指向第一行之前。

while(rs.next()) 
      String tittle=rs.getString("tittle");
      ....


更重要的是,您的查询可能返回不止一行,在这种情况下,您可能希望将结果存储在集合中,List&lt;Map&lt;String, String&gt;&gt;,其中列表中的每个条目代表查询结果中的一行,并且map 保存列名与列值。

【讨论】:

非常感谢,非常简单!!!!!!

以上是关于java.sql.SQLException:结果集开始之前[重复]的主要内容,如果未能解决你的问题,请参考以下文章

java.sql.SQLException:结果集开始之前[重复]

我在尝试从其他方法访问此返回的 resultSetCustomer. 时收到错误“java.sql.SQLException:结果集结束后”

java连接Oracle数据库,从ResultSet中提取数据出现java.sql.sqlException结果集已耗尽

oracle数据库java.sql.SQLException: 结果集已耗尽,总是跳不出while(rs.next())循环,请求高手帮忙解决!

java.sql.SQLException: - ORA-01000: 超过最大打开游标

java.sql.SQLException: - ORA-01000: 超过最大打开游标