sunny123456

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  1796 随笔 :: 22 文章 :: 24 评论 :: 226万 阅读
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

如何把Connection 封装到工具类里面 调用工具类方法实现 增删改查操作 java JDBC使用 C3P0 数据库连接池
答:
当使用C3P0作为数据库连接池时,你可以按照类似的模式来配置和使用它。以下是一个示例,展示了如何在Java项目中配置C3P0连接池,并创建一个工具类来管理数据库连接和执行基本的CRUD操作。

首先,你需要在你的项目中添加C3P0和JDBC驱动的依赖。如果你使用Maven,可以在pom.xml中添加如下依赖(以MySQL JDBC驱动为例):

<dependencies>
    <!-- C3P0 Connection Pool -->
    <dependency>
        <groupId>com.mchange</groupId>
        <artifactId>c3p0</artifactId>
        <version>你的C3P0版本号</version>
    </dependency>

    <!-- MySQL JDBC Driver -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>你的MySQL JDBC驱动版本号</version>
    </dependency>

    <!-- 其他依赖... -->
</dependencies>

然后,你可以创建一个工具类来配置C3P0连接池并提供数据库操作方法:

import com.mchange.v2.c3p0.ComboPooledDataSource;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class DBUtil {

    // 使用单例模式管理C3P0连接池
    private static ComboPooledDataSource dataSource = new ComboPooledDataSource();

    static {
        // 配置C3P0连接池参数
        dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/your_database");
        dataSource.setUser("your_username");
        dataSource.setPassword("your_password");
        dataSource.setMinPoolSize(5);
        dataSource.setMaxPoolSize(20);
        dataSource.setAcquireIncrement(5);
        dataSource.setMaxStatements(100);
        // 其他配置...
    }

    // 获取数据库连接
    public static Connection getConnection() throws SQLException {
        return dataSource.getConnection();
    }

    // 示例:插入数据
    public static void insertData(String tableName, String column1, String value1, String column2, String value2) {
        String sql = "INSERT INTO " + tableName + " (" + column1 + ", " + column2 + ") VALUES (?, ?)";
        try (Connection conn = getConnection();
             PreparedStatement pstmt = conn.prepareStatement(sql)) {
            pstmt.setString(1, value1);
            pstmt.setString(2, value2);
            pstmt.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    // 你可以继续添加查询、更新、删除等方法

    // 注意:关闭连接池的操作通常不在工具类中完成,而是在你的应用关闭时进行
    // 你可以提供一个方法来关闭连接池,但通常这是不必要的,因为大多数应用服务器或框架会在应用停止时自动关闭它
    // 如果你确实需要关闭连接池,可以取消注释以下方法
    /*
    public static void closeDataSource() throws SQLException {
        if (dataSource != null) {
            dataSource.close();
        }
    }
    */
}

请注意,在上面的代码中,ComboPooledDataSource是C3P0提供的一个用于管理数据库连接的类。我们在静态初始化块中配置了连接池的参数,如JDBC URL、用户名、密码、最小连接数、最大连接数等。

getConnection()方法用于从连接池中获取一个连接。在你的数据库操作方法中(如insertData),你可以使用这个连接来执行SQL语句。

请确保替换your_databaseyour_usernameyour_password以及C3P0和JDBC驱动的版本号为你自己的值。

最后,请注意,关闭连接池的操作通常不是由工具类来完成的。在大多数现代Java应用中,连接池的管理是自动的,特别是在使用Spring Boot等框架时。然而,如果你确实需要在应用关闭时手动关闭连接池,可以取消注释closeDataSource()方法,并在适当的位置调用它。但在许多情况下,这是不必要的。

posted on   sunny123456  阅读(13)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2023-08-08 第五节:EF Core中的三类事务(SaveChanges、DbContextTransaction、TransactionScope)
2023-08-08 EF Core事务
2023-08-08 如何改变linux服务器系统时区和时间 修改设置Linux服务器时区
2023-08-08 详解Jvm中时区设置方式,推荐 代码中TimeZone.getTimeZone("Asia/Shanghai") 而不使用TimeZone.getTimeZone("GMT+8")
2023-08-08 @Transactional(rollbackFor = Exception.class) 详解 推荐的事务注解方式 @Transactional(rollbackFor = Exception.class)
2019-08-08 转:异步提交表单插件jquery.form.min.js的使用实例,后台net同样可以接收到Excel文件进行处理
2019-08-08 jquery.form.min.js的ajaxSubmit上传Excel文件,后台返回不是标准json格式回调函数中 textstatus报错parsererror
点击右上角即可分享
微信分享提示