使用c3p0连接池无法连接数据库

使用c3p0连接池无法连接数据库

public void demo1() {

    Connection connection = null;
    PreparedStatement preparedStatement = null;
    ResultSet resultSet = null;
    try {
        //建立连接池
        ComboPooledDataSource dateSource = new ComboPooledDataSource();

        //建立连接
        connection = dateSource.getConnection();
        String sql = "select * from user";
        preparedStatement = connection.prepareStatement(sql);
        resultSet = preparedStatement.executeQuery();
        while (resultSet.next()){
            System.out.println(resultSet.getInt("uid")+resultSet.getString("username")+resultSet.getString("password")+resultSet.getString("name"));
        }
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        //在使用连接池时已经自动将connection的销毁操作变成了归还操作
        JDBCUtil.release(resultSet, preparedStatement, connection);
    }

}
<?xml version="1.0" encoding="UTF-8" ?>
<c3p0-config>
    <default-config>
        <property name="driverClass">com.mysql.jdbc.Driver</property>
        <property name="jdbcUrl">jdbc:mysql://localhost:3306/jdbctest?useSSL=false</property>
        <property name="user">root</property>
        <property name="password">root</property>
        <property name="maxPoolSize">20</property>
        <property name="initialPoolSize">5</property>
    </default-config>

</c3p0-config>

http://img1.sycdn.imooc.com//climg/5b5c98fa00012f1203190690.jpg

http://img1.sycdn.imooc.com//climg/5b5c99000001108d14770839.jpg

使用c3p0后一直报错没有合适驱动,尝试网上诸多方法后依旧无果,jar包重新添加依赖无用,希望老师解惑,谢谢!

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

3回答
提问者 慕容5097141 2018-07-30 16:26:55
public class C3P0Util {
    private static final ComboPooledDataSource dataSource = new ComboPooledDataSource();


    /**
     * 连接数据库
     * @return connection
     * @throws SQLException
     */
    public static Connection getConnection() throws SQLException {
        Connection connection = dataSource.getConnection();
        return connection;
    }

    /**
     * 释放资源
     */
    public static void release(ResultSet rs,Statement statement,Connection connection){
        if(rs!=null){
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            rs=null;
        }

        if(statement!=null){
            try {
                statement.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            statement=null;
        }

        if(connection!=null){
            try {
                connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            connection=null;
        }
    }

    public static void release(Statement statement,Connection connection){
        if(statement!=null){
            try {
                statement.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            statement=null;
        }

        if(connection!=null){
            try {
                connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            connection=null;
        }
    }


}


  • 我看同学在demo1()中使用的是JDBCUtil,两个类的代码是一致的吧?另外建议同学不要使用JDK9,jdk9比较新可能会存在兼容性问题。祝学习愉快!
    2018-07-30 18:51:20
  • 提问者 慕容5097141 回复 一叶知秋519 #2
    好的,谢谢老师,我再试试
    2018-07-30 21:25:18
一叶知秋519 2018-07-29 10:02:13

恩,,同学是说之前没有使用jdbc.properties,后来增加jdbc.properties配置文件并在c3p0-config.xml中配置jdbc.properties文件后就没有问题了?

同学可以把你的解决方法详细说明一下,方便帮助你分析问题的原因。

祝学习愉快!

  • 提问者 慕容5097141 #1
    我后期尝试直接使用c3p0.properties作为配置文件,舍弃xml的配置文件然后成功连接上数据库,所以我怀疑是不是xml文件配置错误,或是没有正确使c3p0搭载c3p0.xml文件
    2018-07-29 16:19:45
  • 一叶知秋519 回复 提问者 慕容5097141 #2
    我将你的代码贴到老师的源码中没有复现出你的问题,建议同学将你的JDBCUtil类贴出来,我们再运行试一下~
    2018-07-30 11:04:23
  • 提问者 慕容5097141 回复 一叶知秋519 #3
    老师代码已经贴上,会是xml配置或是jar报原因吗
    2018-07-30 16:27:40
提问者 慕容5097141 2018-07-29 01:00:25

后来改用properties做配置文件就可以登陆了,是xml配置错误?


问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
Java数据库开发与实战应用2018版
  • 参与学习           人
  • 提交作业       277    份
  • 解答问题       4297    个

Java数据库开发的必备技能,从流行的MySQL数据库开始,到Java原生的数据库管理接口JDBC的使用,再到常用的数据持久化框架MyBatis,让你向Java工程师的目标又迈进了一步!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师