Skip to content

适用虚谷数据库版本

v12.9



适用虚谷数据库版本

v12.9


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驱动正确导入项目
  • 配置参数:合理配置连接参数,充分利用连接池的性能和资源管理