baseDao中的查询方法

andylauxing 2011-05-21 10:51:07
请问大家BaseDao中的通用查询方法是如何写的?我写的如下:
但有一个问题是,不能关闭连接,如果连接不关闭那岂不是很耗服务器资源???

public static ResultSet excuteQuery(String sql,Object[] args) throws ClassNotFoundException, SQLException{
ResultSet rs=null;
Connection conn=getConn();
PreparedStatement pst=null;
pst=conn.prepareStatement(sql);
if(null!=args){
for(int i=0;i<args.length;i++){
pst.setObject(i+1, args[i]);
}
}
rs=pst.executeQuery();
//closeAll(null, pst, null); 这里如果不注释掉,会报错:连接已关闭。
return rs;
}
...全文
474 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
andylauxing 2011-05-21
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 wangyinbin 的回复:]
干脆向我这样吧。。。

Java code

public static boolean upDate(String sql,Object ...obj)throws MyException{
ps=getPreparedStatement(sql,obj);
try {
return ps.execute();
……
[/Quote]

thks angyinbin:
通用更新语句方法,关闭是没问题的,我也是这样写的,我问的是通用查询语句。
现在的问题是如果返回ResultSet,在当前方法中就不能关闭connettion,prepareStatment
如果返回List的话,此时又不能确定实体类,因为select语句是多变的,难道大家都是在Impl子类中实现关闭的?
andylauxing 2011-05-21
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 ticmy 的回复:]
可以用泛型的嘛


引用 2 楼 andylauxing 的回复:

以上是baseDao中的一个通用查询类呀,不然每次查询时都写最原始的connection,prepareStatement?
所以返回ResultSet,在Impl层中调用再返回Listk呀
[/Quote]

能说具休点吗?或改改我那段代码,小弟新手呀,thks.
懒得搭理你 2011-05-21
  • 打赏
  • 举报
回复
干脆向我这样吧。。。

public static boolean upDate(String sql,Object ...obj)throws MyException{
ps=getPreparedStatement(sql,obj);
try {
return ps.execute();
} catch (SQLException e) {
// TODO Auto-generated catch block
throw new MyException("sql语句出错了"+e.getMessage());
}finally{
try {
ps.close();
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
throw new MyException("sql语句出错了"+e.getMessage());
}
}
}

把关闭放在finally里
桐桐-Dragon 2011-05-21
  • 打赏
  • 举报
回复
看的比较乱。。。
Spring89 2011-05-21
  • 打赏
  • 举报
回复
在调用excuteQuery()这个方法的时候关闭不就可以了吗?
反正你返回了一个ResultSet
懒得搭理你 2011-05-21
  • 打赏
  • 举报
回复
用数据库连接池吧。。。
龙四 2011-05-21
  • 打赏
  • 举报
回复
既然是baseDao,还有其他dao extends 这个dao,那么也可以在子类中关闭

[Quote=引用 2 楼 andylauxing 的回复:]

以上是baseDao中的一个通用查询类呀,不然每次查询时都写最原始的connection,prepareStatement?
所以返回ResultSet,在Impl层中调用再返回Listk呀
[/Quote]
龙四 2011-05-21
  • 打赏
  • 举报
回复
可以用泛型的嘛

[Quote=引用 2 楼 andylauxing 的回复:]

以上是baseDao中的一个通用查询类呀,不然每次查询时都写最原始的connection,prepareStatement?
所以返回ResultSet,在Impl层中调用再返回Listk呀
[/Quote]
andylauxing 2011-05-21
  • 打赏
  • 举报
回复
以上是baseDao中的一个通用查询类呀,不然每次查询时都写最原始的connection,prepareStatement?
所以返回ResultSet,在Impl层中调用再返回Listk呀
龙四 2011-05-21
  • 打赏
  • 举报
回复
return rs;

你return rs作甚?你应该将数据取出来,封装进一个bean中,然后将bean放到一个list中,然后返回这个list


而不是直接返回rs

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧