数据库操作公用类问题

骑牛上铂金 2009-08-14 09:22:26
我配置了数据库连接池,并参照一本书上写了一个数据库操作公用类,代码如下:

public class DBConn {

private static DataSource ds=null; //设置DataSource类的对象
public static Connection conn =null; //设置Connection类的对象
private static Statement st = null; //设置Statement类的对象
private ResultSet rs=null; //设置ResultSet类的对象
static {
try {
Context ctx = new InitialContext();
ctx = (Context) ctx.lookup("java:comp/env");
ds = (DataSource) ctx.lookup("jdbc/db"); //取得连接池数据源
conn = ds.getConnection(); //取得数据库的连接
} catch (Exception e) {
e.printStackTrace();
}
}
public ResultSet getResult(String sql) {
try {
st = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_READ_ONLY);
rs = st.executeQuery(sql); //执行对数据库的查询操作
} catch (SQLException e) {
e.printStackTrace();
System.out.println("Query Exception"); //在控制台中输入异常信息
}
return rs; //将查询的结果通过return关键字返回
}
public boolean doExecute(String sql) {
try {
st = conn.createStatement(); //创建声明对象连接
st.executeUpdate(sql); //执行添加、修改、删除操作
return true; //如果执行成功则返回true
} catch (Exception e) {
e.printStackTrace();
return false; //如果执行成功则返回false
}
}




代码中用 static 进行了静态变量初始化,根据static 的相关定义,我理解static{}中的静态变量只会初始化一次,那么为什么还要搞个数据库连接池呢,既然只初始化一次就只会取一个连接,所有的实例都可以共用这个连接,一个连接是不是就可以了??!!


我学JAVA时间不长,请大侠们释疑!!
...全文
120 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
好吃的松子 2009-08-14
  • 打赏
  • 举报
回复
如果只有一个静态连接的话会有问题的,你想如果这个连接在操作数据库的时候,另外一线程也在获取这个连接操作数据库是不是会出现问题呢?
【如鱼饮水】 2009-08-14
  • 打赏
  • 举报
回复
最好连接
和getconnection
close方法都分开写成方法
感觉这本书不是太好·~


给楼主介绍本书《Java开发实战经典》李兴华的
刚出来
里面有好多代码实例~~
感觉不错
骑牛上铂金 2009-08-14
  • 打赏
  • 举报
回复
教材上确实是这样写的?
zhouzongjiu 2009-08-14
  • 打赏
  • 举报
回复
你上面的写法的确只有一个连接,不过我以前是没见过这种写法。
oklinsong 2009-08-14
  • 打赏
  • 举报
回复
数据库连接池是用来管理数据库连接的,你的connection是从连接池里取得,关闭的时候只是把链接放回到连接池了,而不是close掉。
骑牛上铂金 2009-08-14
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 zhang_yu_qin 的回复:]
http://blog.163.com/dlytgaowen/blog/static/93443433200931885047251/

这个帖子是讲为什么要使用数据库连接池的。你去看看吧。
[/Quote]
我最想知道的不是为什么要使用连接池,而是想知道上面的代码可不可用!
如果不可取,请帮忙推荐一个好一点有通用过程!谢谢
xuexijava 2009-08-14
  • 打赏
  • 举报
回复
mark
zhang_yu_QIN 2009-08-14
  • 打赏
  • 举报
回复

http://blog.163.com/dlytgaowen/blog/static/93443433200931885047251/

这个帖子是讲为什么要使用数据库连接池的。你去看看吧。
lindj_java 2009-08-14
  • 打赏
  • 举报
回复
这样做是为了防止数据库连接CONNECTION被同一个类的其他实例滥用造成数据操作异常
使用数据库连接池是为了提高与数据库的连接速度,如果每次使用完数据库连接后,就马上关闭,这必然是浪费。
上面的方法我觉得可以改成静态的,因为都是调用同一个对象
骑牛上铂金 2009-08-14
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 qq271175778 的回复:]
最好连接
和getconnection
close方法都分开写成方法
感觉这本书不是太好·~


给楼主介绍本书《Java开发实战经典》李兴华的
刚出来
里面有好多代码实例~~
感觉不错
[/Quote]

能不能提供一个比较好点的通用类

81,094

社区成员

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

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