我目前正在学习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
。
答案 0 :(得分:2)
如果您不打算返回ResultSet
或Object
对象,则应定义返回类型。您可以为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();
}