如何从JDBC方法返回多行?

时间:2014-05-31 11:41:50

标签: java mysql database jdbc return

我目前正在学习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;
}

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

编辑:

正如评论中所述,这是一个(令人讨厌的)错字。 Object,资金为O

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

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

使用以下代码行:

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

答案 2 :(得分:0)

你就是这样做的

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();

}