C3P0连接池
C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。目前使用它的开源项目有Hibernate,Spring等
使用C3P0配置数据库连接池
配置文件:c3p0-config.xml <c3p0-config> <named-config name="dbInfo"> <!—配置用户名密码、连接、驱动 <property name="user">admin</property> <property name="password">admin</property> <property name="jdbcUrl">jdbc:mysql:///blog</property> <property name="driverClass">com.mysql.jdbc.Driver</property> <!--数据库连接池一次向数据库服务器要多少个连接--> <property name="acquireIncrement">5</property> <!--初始化连接数--> <property name="initialPoolSize">5</property> <!--最小连接数--> <property name="minPoolSize">5</property> <!--最大连接数--> <property name="maxPoolSize">10</property> <!--数据库连接池能维护的最多的Statement 的数量--> <property name="maxStatements">20</property> <!--每个数据库连接可以创建多少个Statement --> <property name="maxStatementsPerConnection">5</property> </named-config> </c3p0-config>
//com.mchange.v2.c3p0.ComboPooledDataSource 创建数据源:(由C3P0实现了SQL接口,实现的内容就是我们刚才包含的配置信息) DataSource dataSource = new ComboPooledDataSource("dbInfo"); 获取连接: Connection conn = dataSource.getConnection();
如果出现The reference to entity "characterEncoding" must end with the ';' delimiter这样的错误:
原因:
数据源配置时加上编码转换格式后出问题了:
The reference to entity "characterEncoding" must end with the ';' delimiter
这个错误就是 配置文件xml中设置数据源链接URL的问题
原来:
jdbc:mysql://localhost:3306/dbName?useUnicode=true&characterEncoding=UTF-8
修改后:
jdbc:mysql://localhost:3306/dbName?useUnicode=true&characterEncoding=UTF-8
这大概是由xml文件中的编码规则决定要这么变换。在xml文件中有以下几类字符要进行转义替换:
< | < | 小于号 |
> | > | 大于号 |
& | & | 和 |
' | ' | 单引号 |
" | " | 双引号 |