【问题标题】:How do I return multiple rows from a JDBC method?如何从 JDBC 方法返回多行?
【发布时间】:2014-05-31 11:41:50
【问题描述】:

我目前正在学习 JDBC,并且可以成功地从 MySQL 数据库中查询和检索数据。但我想将其作为方法运行并将结果集行从方法返回给调用程序。

到目前为止,我认为我已经制定了一个合适的方法,但我坚持将结果集作为object 返回。 Eclipse 给我返回类型的以下错误:

对象无法解析为类型

方法如下:

public object getAllPosts(int catID) throws Exception{
    try{
        this.catID = catID;
        sql = "SELECT post_id, post_title, post_content, post_date FROM crm_posts WHERE cat_id = ? LIMIT ?";
        prep = conn.prepareStatement(sql);
        prep.setInt(1, catID);
        prep.setInt(2, 3);
        // execute statement
        rs = prep.getResultSet();

    } catch(Exception e){
        e.printStackTrace();
    }
    return rs;
}

我应该使用什么返回类型,或者有更好的方法吗?

编辑:

正如 cmets 中所述,这是一个(烦人的)错字。 Object 大写 O

【问题讨论】:

  • 返回类型是否是拼写错误object。应该是Object
  • 为什么不返回一个ResultSet?这样调用方法就可以使用它而无需类型转换。
  • 谢谢@Braj,随时回答,谢谢@Frazz Ill use ResultSet.
  • 只需在您的帖子中编辑它作为解决方案。

标签: java mysql database jdbc return


【解决方案1】:

如果您不打算返回 ResultSetObject 对象,那么您应该定义您的返回类型。您可以为ResultSet 中的每一行创建自己的Post 对象,将这些对象放入一个列表中,然后返回该列表。

【讨论】:

    【解决方案2】:

    在 ResultSet 中执行查询并循环获取结果。

    使用以下代码行:

    Statement st=conn.createStatement();
    ResultSet rs=st.executeQuery(sql);
    while(rs.next()) 
    {
         out.println(rs.getString("//Your Column name"));
    }
    

    【讨论】:

      【解决方案3】:

      这就是你的做法

      public List<MyClassThatRepresentsTableInDatabase> getAllPosts(int catID) throws Exception{
          try{
              this.catID = catID;
              sql = "SELECT post_id, post_title, post_content, post_date FROM crm_posts WHERE cat_id = ? LIMIT ?";
              prep = conn.prepareStatement(sql);
              prep.setInt(1, catID);
              prep.setInt(2, 3);
              // execute statement
              rs = prep.getResultSet();
              List<MyClassThatRepresentsTableInDatabase> ret=new ArrayList<>();
              while(rs.hasNext()){
                 MyClassThatRepresentsTableInDatabase item=
                                       new MyClassThatRepresentsTableInDatabase();
                 item.setId(rs.getLong("post_id");
                 item.setName(rs.getString("post_title");
                 item.setContentd("post_content");
                 //etc..
                 ret.add(item);
              }
              return ret;
          } catch(Exception e){
              e.printStackTrace();
          }
          return new ArrayList();
      
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-12
        相关资源
        最近更新 更多