c3p0 连接 XuguDB 示例程序
📄字数 1.6K
👁️阅读量 加载中...
本文档将介绍如何使用 c3p0 v0.9.1.2 连接使用 XuguDB。
提示
- XuguDB-JDBC 与 c3p0 连接池完全兼容,可以直接使用 c3p0 连接池管理 XuguDB 连接
- 示例代码 xugu-c3p0-demo 克隆/下载
一、导入 c3p0
项目到 IDEA 中
- 使用 Maven 导入
c3p0
依赖
在pom.xml文件中加入以下信息
xml
<!-- c3p0 连接池 -->
<dependency>
<groupId>com.mchange</groupId>
<artifactId>c3p0</artifactId>
<version>v0.9.1.2</version>
</dependency>
<!-- XuguDB-JDBC驱动 -->
<dependency>
<groupId>com.xugudb</groupId>
<artifactId>xugu-jdbc</artifactId>
<version>12.3.4</version>
</dependency>
- 使用 Gradle 导入
c3p0
依赖
在build.gradle
中加入以下信息
txt
//c3p0 连接池
implementation("com.mchange:c3p0:v0.9.1.2")
//XuguDB-JDBC驱动
implementation("com.xugudb:xugu-jdbc:12.3.4")
二、连接示例程序
修改 c3p0
连接池中数据库连接信息
- 在
src/main/resources/c3p0-config.xml
配置文件中设置 c3p0 参数信息,如下所示:
xml
<c3p0-config>
<!-- 自定义命名的配置,可以通过方法调节实现 -->
<named-config name="mySource">
<!-- 数据库用户名 -->
<property name="user">SYSDBA</property>
<!-- 数据库密码 -->
<property name="password">SYSDBA</property>
<!-- 注册 XuguDB-JDBC 驱动 -->
<property name="driverClass">com.xugu.cloudjdbc.Driver</property>
<!-- 数据库url -->
<property name="jdbcUrl">jdbc:xugu://127.0.0.1:5138/SYSTEM</property>
<!-- 初始化数据库时的连接的数量 -->
<property name="initialPoolSize">10</property>
<!-- 连接的最大存活时间 -->
<property name="maxIdleTime">60</property>
<!-- 最大连接数量 -->
<property name="maxPoolSize">10</property>
<!-- 最小连接数量 -->
<property name="minPoolSize">5</property>
</named-config>
</c3p0-config>
提示
更多配置信息参考:c3p0 官网配置信息
- 向数据库插入测试数据
sql
create table test(id int identity(1,1) primary key,name varchar,age int);
insert into test values (default,'AandB',1);
insert into test values (default,'CandD',2);
insert into test values (default,'EandF',3);
insert into test values (default,'GandH',4);
insert into test values (default,'IandJ',5);
- 创建
src/main/java/com/xugu/c3p0/ConnectionPool.java
连接池对象获取接口
java
public class ConnectionPool {
//数据源
private DataSource ds;
//连接池
private static ConnectionPool pool;
//读取数据源配置
private ConnectionPool(){
ds = new ComboPooledDataSource("mySource");
}
//获取连接池实例
public static final ConnectionPool getInstance(){
if(pool==null){
try{
pool = new ConnectionPool();
}catch (Exception e) {
e.printStackTrace();
}
}
return pool;
}
//获取连接
public synchronized final Connection getConnection() {
try {
return ds.getConnection();
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
}
- 创建
src/main/java/com/xugu/test/C3p0TestDemo.java
连接池测试接口
java
public class C3p0TestDemo {
public static void main(String[] args) {
ConnectionPool pool = ConnectionPool.getInstance();
Connection conn = pool.getConnection();
try {
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select count(*) from test");
while (rs.next()) {
System.out.println("总共查询到:"+rs.getInt(1)+"条数据");
}
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
}
三、常见问题&解决办法
- 数据库驱动:确认XuguDB-JDBC驱动正确导入项目
- 配置参数:合理配置连接参数,充分利用连接池的性能和资源管理