CP30连接池连接数据库
来源:互联网 发布:hgkp软件 编辑:程序博客网 时间:2024/05/22 00:17
CP30连接池。
关键代码:
(1) C3P0JdbcUtil.java
packageex4;importjava.beans.PropertyVetoException;importjava.sql.Connection;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Statement;importcom.mchange.v2.c3p0.ComboPooledDataSource;//重要publicclass C3P0JdbcUtil {public static Connection getConnection()throwsSQLException, PropertyVetoException{//完成初始化 ComboPooledDataSourcecpds = new ComboPooledDataSource();cpds.setDriverClass("com.microsoft.sqlserver.jdbc.SQLServerDriver"); cpds.setJdbcUrl("jdbc:sqlserver://localhost:1433"); cpds.setUser("sa"); cpds.setPassword("123456"); cpds.setAcquireIncrement(5); cpds.setInitialPoolSize(10); cpds.setMaxPoolSize(20); returncpds.getConnection();}public static void release(Connection conn,Statementst,ResultSet rs){ if(rs!=null){ try{ rs.close(); }catch(Exceptione){ e.printStackTrace(); }rs=null; } if(st!=null){ try{ st.close(); }catch(Exception e){ e.printStackTrace(); } st=null; } if(conn!=null){ try{ conn.close(); }catch(Exception e){ e.printStackTrace(); } conn=null; }}}
(2)Main.java
packageex4;importjava.beans.PropertyVetoException;importjava.sql.Connection;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Statement;publicclass Main { public static void main(String[] args)throws PropertyVetoException{ try{ Connectionconn=C3P0JdbcUtil.getConnection(); Statementstmt=conn.createStatement(); Stringsql="select sn,sex from [EDUCATION].[dbo].[Student]"; ResultSetrs=stmt.executeQuery(sql); while(rs.next()){ System.out.println(rs.getString("sn")+""+rs.getString("sex")); } C3P0JdbcUtil.release(conn,stmt, rs); }catch(SQLExceptione){ e.printStackTrace(); } }}
分析:
1、多次建立connection连接很浪费资源, 每申请一个connection并关闭,效率低下。
数据库连接池负责分配,管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是重新建立一个。若无空闲连接,用户则等待其他用户释放。
2、数据库连接池的最小连接数和最大连接数的设置要考虑到以下几个因素:
最小连接数:是连接池一直保持的数据库连接,所以如果应用程序对数据库连接的使用量不大,将会有大量的数据库连接资源被浪费。
最大连接数:是连接池能申请的最大连接数,如果数据库连接请求超过次数,后面的数据库连接请求将被加入到等待队列中,这会影响以后的数据库操作。
如果最小连接数与最大连接数相差很大:那么最先连接请求将会获利,之后超过最小连接数量的连接请求等价于建立一个新的数据库连接。不过,这些大于最小连接数的数据库连接在使用完不会马上被释放,他将被放到连接池中等待重复使用或是空间超时后被释放。
3、主要参数:driver、url、username、Password、initialPoolSize、maxPoolSize
4、编写连接池需实现java.sql.DataSource接口。
DataSource接口中定义了两个重载的getConnection方法:
ConnectiongetConnection()
ConnectiongetConnection(String username, String password)
实现DataSource接口,在用户关闭connetcion的实例的时候,connection实例重新进入到连接池(改写方法)。
5、实现连接池的三种方式:手写DataSource实现类、使用dpcp、使用c3p0
6、配置文件一定要放在src下面(与类在同一目录下),且配置文件中的名字都是固定的。
7、在相应方法实现时一定要先导入相应的包。
8、Java中getResourceAsStream的用法
首先,Java中的getResourceAsStream有以下几种:
1Class.getResourceAsStream(String path) : path 不以‘/’开头时默认是从此类所在的包下取资源,以‘/’开头则是从ClassPath根下获取。其只是通过path构造一个绝对路径,最终还是由ClassLoader获取资源。
2Class.getClassLoader.getResourceAsStream(String path) :默认则是从ClassPath根下获取,path不能以‘/’开头,最终是由ClassLoader获取资源。
3ServletContext. getResourceAsStream(String path):默认从WebAPP根目录下取资源,Tomcat下path是否以‘/’开头无所谓,当然这和具体的容器实现有关。
4Jsp下的application内置对象就是上面的ServletContext的一种实现。
9、CP30可以实现名字绑定,连接多种数据库,常用。
- CP30连接池连接数据库
- hibernate CP30连接池配置
- cp30连接池配置问题
- CP30数据连接池死锁
- 用CP30获取连接的工具类
- DBCP,CP30及proxool连接池在spring+hibernate中的配置
- DBCP,CP30及proxool连接池在spring+hibernate中的配置
- DBCP,CP30及proxool连接池在spring+hibernate中的配置 用spring默认的连接池性能效率不高, 如果数据库重启, 应用程序也要重启才能使用, 这样比较麻烦, 下面介绍三
- 连接池连接数据库
- 连接池方法连接数据库
- 连接池连接Mysql数据库
- 建立连接池连接数据库
- DBCP连接池连接数据库
- ASP 数据库,连接数据库,连接池
- java 数据库 连接池
- 数据库-连接池
- 数据库的连接池
- 数据库_jdbc_连接池
- try-catch以及try-catch-finally
- 用jquery开发手机app起步时遇到的问题
- UVALive - 6525 Attacking rooks
- SplayTree
- atom如何安装插件
- CP30连接池连接数据库
- Python实践 贴吧爬虫
- 如何用JS控制复选框选中,element.checked
- 第一章,作用域是什么
- smarty模板引擎变量的传递方法
- 使用Virtualbox调试自制操作系统
- Proteus 8找不到DEFAULT.DTF文件的解决方案
- 全球化流程中原型设计的加分项
- 洛谷 2320