2、.getcom.mchange.v2.c3p0.impl.NewProxyConnection cannot becast to com.mysql.jdbc.Connection

标准的demo:

2、JdbcUtils

JdbcUtils用来获取Connection对象,以及开启和关闭事务。

l Connection getConnection():从c3p0连接池获取Connection对象,所以需要提供c3p0-config.xml配置文件;

l beginTransaction():为当前线程开启事务;

l commitTransaction():提交当前线程的事务;

l rollbackTransaction():回滚当前线程的事务;

l releaseConnection(Connection):如果参数连接对象不是当前事务的连接对象,那么关闭它,否则什么都不做;


c3p0-config.xml

<?xml version="1.0" encoding="UTF-8" ?>

<c3p0-config>

<default-config> 

<property name="jdbcUrl">jdbc:mysql://localhost:3306/mydb1</property>

<property name="driverClass">com.mysql.jdbc.Driver</property>

<property name="user">root</property>

<property name="password">123</property>

<property name="acquireIncrement">3</property>

<property name="initialPoolSize">10</property>

<property name="minPoolSize">2</property>

<property name="maxPoolSize">10</property>

</default-config>

</c3p0-config>

 

JdbcUtilsTest.java

/**

 * 测试JdbcUtils

 * @author qdmmy6

 *

 */

public class JdbcUtilsTest {

/**

 * 通过C3P0连接池获取连接对象

 * @throws SQLException

 */

@Test

public void testGetConnection() throws SQLException {

Connection con = JdbcUtils.getConnection();//获取连接

System.out.println(con);

JdbcUtils.releaseConnection(con);//如果参数con不是当前线程的连接对象,那么关闭之

}

/**

 * 当开始事务后,调用getConnection()会为当前线程创建Connection,而且多次调用getConnection()返回的是同一个对象

 * @throws SQLException

 */

@Test

public void testTansaction() throws SQLException {

JdbcUtils.beginTransaction();//开启事务

Connection c1 = JdbcUtils.getConnection();//第一次获取当前线程的事务连接对象

Connection c2 = JdbcUtils.getConnection();//第二次获取当前线程的事务连接对象

Assert.assertEquals(true, c1 == c2);//比较两次是否相同

JdbcUtils.commitTransaction();//提交事务

}

}


package cn.gaozhen.test;



import static org.junit.Assert.*;


import java.sql.Connection;    如果写成这个 
com.mysql.jdbc.Connection将会com.mchange.v2.c3p0.impl.NewProxyConnection cannot be cast to com.mysql.jdbc.Connection
import java.sql.SQLException;


import org.junit.Test;


import cn.itcast.jdbc.JdbcUtils;






public class JdbcUtilsTest {


/*
* JdbcUtils用来获取connection
* 底层用了c3p0连接池
* 需要的jar:c3p0-0.9.2-pre1.jar,mchange-commons-0.2.jar
 
* 还需要mysql驱动
* mysql-connector-java-5.1.13-bin.jar


* 因为底层用了c3p0连接池,说明我们还需要c3p0配置文件,
* 放到src下
* /Test/src/c3p0-config.xml
*/
@Test
public void testGetConnection()  {
Connection conn;
try {
conn = JdbcUtils.getConnection();
System.out.println(conn);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
@Test
public void testTransaction()
{
try {
JdbcUtils.beginTransaction();//开启事务
//多次操作
JdbcUtils.commitTransaction();//提交事务

} catch (Exception e) {
// TODO: handle exception
}
}


}
根据提供的引用内容,出现这个错误是因为找不到com.mchange.v2.c3p0.ComboPooledDataSource类。这个类是c3p0连接池库的一部分,它可能没有正确地添加到项目的构建路径中。 解决这个问题的方法是确保c3p0库已经正确地添加到项目中。以下是一些可能的解决方法: 1. 确认c3p0库已经正确地添加到项目的构建路径中。可以通过以下步骤来添加库: - 在Eclipse中,右键单击项目,选择"Properties"。 - 在"Java Build Path"选项卡中,选择"Libraries"选项卡。 - 点击"Add External JARs"按钮,然后选择c3p0库的JAR文件。 - 点击"Apply"按钮保存更改。 2. 如果c3p0库已经添加到项目中,但仍然出现错误,请确保库的版本与项目的其他依赖项兼容。有时候不同版本的库之间可能会有冲突。 3. 如果以上方法都没有解决问题,可以尝试重新下载并添加最新版本的c3p0库。 以下是一个示例代码,演示了如何使用c3p0连接池创建ComboPooledDataSource对象: ```java import com.mchange.v2.c3p0.ComboPooledDataSource; public class Example { public static void main(String[] args) { ComboPooledDataSource cpds = new ComboPooledDataSource(); // 设置连接数据库的相关配置 cpds.setDriverClass("com.mysql.jdbc.Driver"); cpds.setJdbcUrl("jdbc:mysql://localhost:3306/mydatabase"); cpds.setUser("username"); cpds.setPassword("password"); // 使用连接池获取数据库连接 Connection conn = cpds.getConnection(); // 执行数据库操作 // 关闭连接 conn.close(); } } ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值