JDBC数据库连接池问题

1,一个Connection对象,在一个时刻能不能创建多个Statement(经测试ORACLE貌似可以,其他未知)2,一个Statement对象,在一个时刻是否可以查询... 1,一个Connection对象,在一个时刻能不能创建多个Statement(经测试ORACLE貌似可以,其他未知)

2,一个Statement对象,在一个时刻是否可以查询出多个ResultSet(经测试ORACLE貌似可以,其他未知)

3,如果一个Connection可以同时执行多个Statement,那干嘛在连接池中创建一堆连接

4,如果说是一个Connection是因为同时执行的Statement数量是有上限的,才在池中创建多个连接,那么上限是多少,又怎么判断一个连接是否是繁忙的

5,一般的连接池实现(DBCP,C3P0)是在什么时候关闭连接的,是在连接出现SQLException时,还是在Statement查询超时的时候,statement有setQueryTimeout(seconds) 方法,那是设置查询超时的时间,还是设置命令执行超时的时间,比方像executeUpdate操作,如何判断是否超时

6,连接池是否应该在应用关闭时释放,close掉全部物理链接

7,在Web服务器正常关闭时,连接池该如何释放

8,在Web服务器异常终止时,连接池该如何释放

9,被Spring管理的 连接池 是否会在 Spring 容器销毁时 , 关闭全部连接

——————

经本机测试
Oracle 10g
一个Connection最多可以创建300个Statement
程序退出时,会自动释放数据库链接

其他数据库暂没有环境,无法测试
根据 tian36005274 的回答,及本机测试(基于ORACLE,MYSQL)
1,一个Connection上可以建多个Statement(ORACLE:300个,MYSQL:三万个以上,超过则程序异常终止)
2,一个Statement也可以查出多个ResultSet
3,4,因为要控制事务,所以要建多个Connection,我在考虑另一个问题,为什么提交事务是Connection的方法,而不是Statment的方法,如果每个Statement可以独立提交,是否可以提高性能吗?
5,6,7,8,9,经我对一些连接池的测试,连接池并不关闭物理链接,除非 查询超时,重试失败 或者 连接池比较空闲,超过最大的空闲连接数;在Web容器关闭时,连接池是自动释放的,Spring是怎么做的还没研究过
展开
 我来答
tian36005274
2011-08-03
知道答主
回答量:28
采纳率:0%
帮助的人:14.4万
展开全部
1.可以
2.可以
3.如果都用一个Connection,并发怎么办,事物怎么处理?
4.同上
5.(DBCP,C3P0)只是连接池,关闭连接是在程序中控制的。如果是用spring是在请求结束时spring自动关闭的。
6.不是,连接池的作用就是close连接是不close物理连接。
7.连接池是web应用层面东西。在Web服务器都关了,连接池就没有了啊。
8.同上。
9.“关闭全部连接”有语义歧义。
Storm代理
2023-07-25 广告
StormProxies是一家国内优质海外HTTP代理商,拥有一个庞大的IP资源池,覆盖200多个地区,IP数量大且匿名度高。其优点还包括超高并发、稳定高效、技术服务等特点,同时提供HTTP、HTTPS以及SOCKS5协议支持。此外,Sto... 点击进入详情页
本回答由Storm代理提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式