jdbc连接数据库读取数据报错,什么原因

普通dao类:publicclassWorkDao{privateResultSetres=null;publicListgetName(){Stringsql="sel... 普通dao类:
public class WorkDao{
private ResultSet res=null;
public List getName(){
String sql="select name from tb_user ";
List list=new ArrayList();
try{
BaseDao.getexecute(sql,null);
res=BaseDao.getRes();
while(res.next()){
name=res.getString("name");
list.add(name);
}
res.close();
}catch(Exception e){
//打印报错信息
}finally{
BaseDao.closeall();
}
return list;
}
}
BaseDao类:
public class BaseDao {
private static Connection con;
private static PreparedStatement pstmt;

//通用业务操作
public static void execute(String sql, List parms) {
try {
con = DBConnection.getDBCon();
pstmt = con.prepareStatement(sql,
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
if (parms != null) {
setParam(pstmt, parms);
}
pstmt.execute();

} catch (Exception e) {
e.printStackTrace();
}

}
//返回插入的主键
public static ResultSet getKeys() throws SQLException{
return pstmt.getGeneratedKeys();
}

//返回结果集
public static ResultSet getRes() {
ResultSet res = null;
try {
res = pstmt.getResultSet();
//Result result=null;
//result=ResultSupport.toResult(res);
} catch (SQLException e) {
e.printStackTrace();
}
return res;
}

//返回影响行数
public static int getUpdateCount() {
int no = 0;
try {
no = pstmt.getUpdateCount();
} catch (Exception e) {
e.printStackTrace();
}
return no;
}

//循环给参数赋值
public static void setParam(PreparedStatement pstmt, List parms) {
try {
for (int i = 0; i < parms.size(); i++) {
Object obj = (Object) parms.get(i);
pstmt.setObject(i + 1, obj);
}
} catch (Exception e) {
e.printStackTrace();
}

}
//关闭资源
public static void closeAll() {
try {
if (con != null || !con.isClosed()) {
con.close();
}
if (pstmt != null || !pstmt.isClosed()) {
pstmt.close();
}
} catch (Exception e) {
e.printStackTrace();
}

}
public static Connection getDBCon()
{

Connection conn=null;
try {
conn = DriverManager.getConnection(url,user,passWord);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

return conn;

}

}
这是我普通dao类通过通用的basedao读取数据库的方法。当在页面高速刷新页面的时候,后台就会报错连接已关闭。到底是connection的错,还是res的错??麻烦各位给看看
展开
 我来答
liyong072
2010-10-25
知道答主
回答量:30
采纳率:0%
帮助的人:19.8万
展开全部
呵呵
连数据库四部曲
1.加载驱动 就是把数据库驱动加载到内存
2.创建连接 通过驱动连接数据库
3.相应操作 增删改查操作
4.关闭
明显你没加载驱动吗!!
就是缺少Class.forname("driver classname");
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kaivsj
2010-10-19
知道答主
回答量:35
采纳率:0%
帮助的人:16.3万
展开全部
关闭资源的时候 没有关闭res
并且最好按照顺序关闭
先关闭res 然后关闭 pstmt 最后关闭con
试试看帮到你没?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
混世哥
2010-11-01
知道答主
回答量:16
采纳率:0%
帮助的人:24.8万
展开全部
resultset的原因。不能使用同一个声明的resultset
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
贯森0gN
2010-10-26
知道答主
回答量:11
采纳率:0%
帮助的人:0
展开全部
一楼正解.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式