c3p0连接

学了一些东西来总结一下吧!

C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。目前使用它的开源项目有Hibernate,Spring等。                                                                                                                                                         --来自百度

怎么做呢?

新建java项目,添加c3p0-config.xml。xml内容是

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

	<default-config>
		<property name="driverClass">com.mysql.jdbc.Driver</property>
		<property name="jdbcUrl">jdbc:mysql:///web08</property>
		<property name="user">root</property>
		<property name="password">JB595132</property>
		<property name="initialPoolSize">5</property>
		<property name="maxPoolSize">20</property>
	</default-config>

	<named-config name="itheima">
		<property name="driverClass">com.mysql.jdbc.Driver</property>
		<property name="jdbcUrl">jdbc:mysql:///web08</property>
		<property name="user">root</property>
		<property name="password">JB595132</property>
	</named-config>


</c3p0-config>

  这个xml代表的是连接数据库的配置信息驱动,数据库地址,登陆名称和密码。

  构造连接源

public class C3P0Utils {
   public static ComboPooledDataSource dataSource=new ComboPooledDataSource("itheima");
   public static DataSource getDataSource(){
	return dataSource;
	   
   }
   public static Connection getConnection(){
	   try {
		return dataSource.getConnection();
	} catch (SQLException e) {
		throw new RuntimeException(e);
	}
   }

  ComboPooledDataSource是固定的方法自动找xml文件(c3p0-config.xml这个文件的名字不能改变!)其中的参数“itheima”是参数,是xml属性的一个,xml有两个配置信息。

下面是执行sql,插入到数据库中。

public class TestC3p0 {
	  @Test
	  public void testAddUser2(){
	  	Connection conn=null;
	  	PreparedStatement pstmt=null;
	  //	MyDataSource datasource=new  MyDataSource();
	  //	ComboPooledDataSource datasource=new ComboPooledDataSource();
	  	try{
	  	  conn=C3P0Utils.getConnection();
	  	  String sql="insert into user values(null,?,?,null)";
	  	  pstmt=conn.prepareStatement(sql);
	  	  pstmt.setString(1, "吕布bu122"); //参数化
	  	  pstmt.setString(2, "diaocan2");
	  	  int rows=pstmt.executeUpdate();//执行操作
	  	  if(rows>0){
	  		  System.out.println("成功了");
	  	  }
	  	  else{
	  		  System.out.println("添加失败了");
	  	  }
	  	}catch(Exception e){
	  		 throw new RuntimeException(e);
	  	}finally{
	  		//datasource.backConnection(conn);
	  		JDBCUtils_V3.release(conn, pstmt, null);//关闭连接
	  	}
	  	 
	  }
}
	public static void release(Connection conn, java.sql.PreparedStatement pstmt, ResultSet rs) {
		if (conn != null) {
			try {
				conn.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		if (pstmt != null) {
			try {
				pstmt.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		if (rs != null) {
			try {
				rs.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}

猜你喜欢

转载自blog.csdn.net/iwuio/article/details/81275154
今日推荐