C3P0连接池

使用mysql的c3p0

除了c3p0.jar还要使用

Mchange Commons Java这里面的jar

 我们应该知道mchange-commons包是c3p0数据库连接池的辅助包,如果没有这个包系统启动时会报classnotfoundexception,这是更新c3p0-0.9.2版本后分离出来的包,0.9.1的时候还是只是一个包,但是我加了mchange-commons包还是报包错,那就是辅助包与c3p0包不兼容了
 

写c3p0-config.properties文件

测试c3p0类

输出:

最后补充一个之前写DBCP连接池的错误

就是第二个使用property配置属性的时候

里面配置属性命名问题都要小写,不然链接会报错:

Caused by: java.sql.SQLException: Access denied for user ''@'localhost' (using password: YES)

报错截图

 改正后正确运行截图

代码:

C3P0Demp

package com.yanqun.util;

import com.mchange.v2.c3p0.ComboPooledDataSource;

import javax.sql.DataSource;
import java.beans.PropertyVetoException;
import java.sql.SQLException;

public class C3P0Demp {

    public  static DataSource getDataSourceWithC3P0() throws PropertyVetoException {
        ComboPooledDataSource c3p0=new ComboPooledDataSource();
        c3p0.setDriverClass("com.mysql.cj.jdbc.Driver");
        c3p0.setJdbcUrl("jdbc:mysql://localhost:3306/goods");
        c3p0.setUser("root");
        c3p0.setPassword("123456");
        return c3p0;
    }

    public  static DataSource getDataSourceWithC3P0ByXml() throws PropertyVetoException {
        ComboPooledDataSource c3p0=new ComboPooledDataSource("yanqun");
        return c3p0;
    }

    public static void main(String[] args) throws PropertyVetoException, SQLException {
        System.out.println(getDataSourceWithC3P0().getConnection());
        System.out.println("========================================");
        System.out.println(getDataSourceWithC3P0ByXml().getConnection());
    }
}

DataSourceUtil

package com.yanqun.util;

import com.mchange.v2.c3p0.ComboPooledDataSource;
import org.apache.commons.dbcp.BasicDataSource;
import org.apache.commons.dbcp.BasicDataSourceFactory;

import javax.sql.DataSource;
import java.beans.PropertyVetoException;
import java.io.InputStream;
import java.util.Properties;

public class DataSourceUtil {

    //硬编码
    public static DataSource getDataSourceWithDBCP(){
        BasicDataSource dbcp=new BasicDataSource();
        dbcp.setDriverClassName("com.mysql.cj.jdbc.Driver");
        dbcp.setUrl("jdbc:mysql://localhost:3306/goods");
        dbcp.setUsername("root");
        dbcp.setPassword("123456");
        dbcp.setInitialSize(20);
        dbcp.setMaxActive(10);
        return dbcp;
    }

    public static DataSource getDataSourceWithDBCPByProperties() throws Exception {
        DataSource dbcp=null;
        Properties props=new Properties();
        //将字符串变成一个输入流
        InputStream input = new DBCPDemo().getClass().getClassLoader().getResourceAsStream("dbcpconfig.properties");

        //因为load需要一个流的形式,而我们properties的path是一个字符串
        //所以需要将一个字符串类型的数据转成流的形式
        props.load(input);

        dbcp= BasicDataSourceFactory.createDataSource(props);

        return dbcp;
    }


    //c3p0数据连接池
    public  static DataSource getDataSourceWithC3P0() throws PropertyVetoException {
        ComboPooledDataSource c3p0=new ComboPooledDataSource();
        c3p0.setDriverClass("com.mysql.cj.jdbc.Driver");
        c3p0.setJdbcUrl("jdbc:mysql://localhost:3306/goods");
        c3p0.setUser("root");
        c3p0.setPassword("123456");
        return c3p0;
    }

    public  static DataSource getDataSourceWithC3P0ByXml() throws PropertyVetoException {
        ComboPooledDataSource c3p0=new ComboPooledDataSource("yanqun");
        return c3p0;
    }
}


DBCPDemo

package com.yanqun.util;


import org.apache.commons.dbcp.BasicDataSource;
import org.apache.commons.dbcp.BasicDataSourceFactory;

import javax.sql.DataSource;
import java.io.InputStream;
import java.util.Properties;

public class DBCPDemo {


    //硬编码
    public static DataSource getDataSourceWithDBCP(){

        /*
        private static final String URL = "jdbc:mysql://localhost:3306/goods";
    private static final String USERNAME = "root";
    private  static final String PWD = "123456";
//通过jdbc存储二进制类型
//    设置Blob类型:
    public static void blobDemo() {//增删改
        PreparedStatement pstmt = null;
        Connection connection = null;
        try {
//            a.导入驱动,加载具体的驱动类
            Class.forName("com.mysql.cj.jdbc.Driver");

         */
        BasicDataSource dbcp=new BasicDataSource();
        dbcp.setDriverClassName("com.mysql.cj.jdbc.Driver");
        dbcp.setUrl("jdbc:mysql://localhost:3306/goods");
        dbcp.setUsername("root");
        dbcp.setPassword("123456");
        dbcp.setInitialSize(20);
        dbcp.setMaxActive(10);
        return dbcp;
    }

    public static DataSource getDataSourceWithDBCPByProperties() throws Exception {
        DataSource dbcp=null;
        Properties props=new Properties();
        //将字符串变成一个输入流
        InputStream input = new DBCPDemo().getClass().getClassLoader().getResourceAsStream("dbcpconfig.properties");

        //因为load需要一个流的形式,而我们properties的path是一个字符串
        //所以需要将一个字符串类型的数据转成流的形式
        props.load(input);

        dbcp=BasicDataSourceFactory.createDataSource(props);

        return dbcp;
    }

    public static void main(String[] args) throws Exception {

//        System.out.println(DataSourceUtil.getDataSourceWithDBCPByProperties().getConnection());
        System.out.println(getDataSourceWithDBCPByProperties().getConnection());
    }
}


c3p0-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
    <default-config>
        <property name="user">root</property>
        <property name="password">123456</property>
        <property name="driverClass">com.mysql.cj.jdbc.Driver</property>
        <property name="jdbcUrl">jdbc:mysql://localhost:3306/goods</property>
        <property name="checkoutTimeout">30000</property>
    </default-config>
    <name-config name="yanqun">
        <property name="user">root</property>
        <property name="password">123456</property>
        <property name="driverClass">com.mysql.cj.jdbc.Driver</property>
        <property name="jdbcUrl">jdbc:mysql://localhost:3306/goods</property>
        <property name="checkoutTimeout">20000</property>

    </name-config>

</c3p0-config>


dbcpconfig.properties

driverClassName=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/goods
username=root
password=123456
initialSize=10

### 关于 UniApp 框架推荐资源与教程 #### 1. **Uniapp 官方文档** 官方文档是最权威的学习资料之一,涵盖了从基础概念到高级特性的全方位讲解。对于初学者来说,这是了解 UniApp 架构技术细节的最佳起点[^3]。 #### 2. **《Uniapp 从入门到精通:案例分析与最佳实践》** 该文章提供了系统的知识体系,帮助开发者掌握 Uniapp 的基础知识、实际应用以及开发过程中的最佳实践方法。它不仅适合新手快速上手,也能够为有经验的开发者提供深入的技术指导[^1]。 #### 3. **ThorUI-uniapp 开源项目教程** 这是一个专注于 UI 组件库设计实现的教学材料,基于 ThorUI 提供了一系列实用的功能模块。通过学习此开源项目的具体实现方式,可以更好地理解如何高效构建美观且一致的应用界面[^2]。 #### 4. **跨平台开发利器:UniApp 全面解析与实践指南** 这篇文章按照章节形式详细阐述了 UniApp 的各个方面,包括但不限于其工作原理、技术栈介绍、开发环境配置等内容,并附带丰富的实例演示来辅助说明理论知识点。 以下是几个重要的主题摘选: - **核心特性解析**:解释了跨端运行机制、底层架构组成及其主要功能特点。 - **开发实践指南**:给出了具体的页面编写样例代码,展示了不同设备间 API 调用的方法论。 - **性能优化建议**:针对启动时间缩短、图形绘制效率提升等方面提出了可行策略。 ```javascript // 示例代码片段展示条件编译语法 export default { methods: { showPlatform() { console.log(process.env.UNI_PLATFORM); // 输出当前平台名称 #ifdef APP-PLUS console.log('Running on App'); #endif #ifdef H5 console.log('Running on Web'); #endif } } } ``` #### 5. **其他补充资源** 除了上述提到的内容外,还有许多在线课程视频可供选择,比如 Bilibili 上的一些免费系列讲座;另外 GitHub GitCode 平台上也有不少优质的社区贡献作品值得借鉴研究。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值