Java 如何从JDBC方法返回多行?
我目前正在学习JDBC,能够成功地从MysQL数据库中查询和检索数据。但我希望将其作为一个方法运行,并将结果集行从该方法返回给调用程序 到目前为止,我认为我已经制定了一个合适的方法,但我仍然无法将结果集作为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 =
对象返回。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
。只需在您的帖子中编辑它作为解决方案即可。