Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从JDBC方法返回多行?_Java_Mysql_Database_Jdbc_Return - Fatal编程技术网

Java 如何从JDBC方法返回多行?

Java 如何从JDBC方法返回多行?,java,mysql,database,jdbc,return,Java,Mysql,Database,Jdbc,Return,我目前正在学习JDBC,能够成功地从MysQL数据库中查询和检索数据。但我希望将其作为一个方法运行,并将结果集行从该方法返回给调用程序 到目前为止,我认为我已经制定了一个合适的方法,但我仍然无法将结果集作为对象返回。Eclipse为返回类型提供了以下错误: 对象无法解析为类型 方法如下: public object getAllPosts(int catID) throws Exception{ try{ this.catID = catID; sql =

我目前正在学习JDBC,能够成功地从MysQL数据库中查询和检索数据。但我希望将其作为一个方法运行,并将结果集行从该方法返回给调用程序

到目前为止,我认为我已经制定了一个合适的方法,但我仍然无法将结果集作为
对象返回。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

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

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

使用以下代码行:

Statement st=conn.createStatement();
ResultSet rs=st.executeQuery(sql);
while(rs.next()) 
{
     out.println(rs.getString("//Your Column name"));
}
你就是这样做的

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

}
public List getAllPosts(int-catID)引发异常{
试一试{
this.catID=catID;
sql=“从类别id=?限制的crm_帖子中选择帖子id、帖子标题、帖子内容、帖子日期?”;
prep=conn.prepareStatement(sql);
准备设置(1,catID);
prep.setInt(2,3);
//执行语句
rs=prep.getResultSet();
List ret=new ArrayList();
while(rs.hasNext()){
表示稳定数据库项的MyClass=
表示稳定数据库()的新MyClass;
项目setId(rs.getLong(“后id”);
item.setName(rs.getString(“post_title”);
项目.setContentd(“发布内容”);
//等等。。
重新添加(项目);
}
返回ret;
}捕获(例外e){
e、 printStackTrace();
}
返回新的ArrayList();
}

返回类型中是否输入了
object
。它应该是
object
为什么不返回结果集?这样调用方法就可以使用它,而无需进行类型转换。谢谢@Braj,请随意回答,谢谢@Frazz将使用
ResultSet
。只需在您的帖子中编辑它作为解决方案即可。