配置C3P3连接池 实现添加数据

简单实现项目:https://download.csdn.net/download/superc06/10418244

连接池概念 

    用池来管理Connection,这样可以重复使用Connection。有了池就不需要自己创建Connection,而是通过池来获取Connection对象。当使用完Connection对象后,调用Connection的close()方法不会关闭Connection而是把Connection“归还”给池。池就可以再次利用这个Connection对象。

规范

    java为数据库连接池提供了公共的接口:javax.sql.DataSourse.各厂商需要让自己的连接池实现这个接口。

C3P0连接池

    需要的jar包:c3p0-0.9.2-pre5.jar

    需要的配置文件:c3p0-config.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">123456</property>
	<property name="initialPoolSize">5</property>
	<property name="maxPoolSize">20</property>
  </default-config>
  
  <named-config name="superc"> 
    <property name="driverClass">com.mysql.jdbc.Driver</property>
	<property name="jdbcUrl">jdbc:mysql:///web08</property>
	<property name="user">root</property>
	<property name="password">123456</property>
  </named-config>
  
</c3p0-config>
C3P0提供的核心工具类:ComboPoledDataSource.如果要使用连接池,必须创建该类的实例对象。

    new ComboPoledDataSource("名称");使用配置文件“命名配置”

            <named-config name="superc"> 默认配置为空

实现代码:

package com.yci.jdbc.utils;

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

import javax.sql.DataSource;

import com.mchange.v2.c3p0.ComboPooledDataSource;

public class C3P0Utils {
	private static ComboPooledDataSource dataSource = new ComboPooledDataSource();
	//获得数据源(连接池)
	public static DataSource getDataSource() {
		return dataSource;
	}
	//获得连接
	public static Connection getConnection() {
		try {
			return dataSource.getConnection();
		} catch (SQLException e) {
			throw new RuntimeException(e);
		}
	}
	//返回连接池
	public static void release(Connection connection,PreparedStatement preparedStatement ,ResultSet resultSet) {
		if(resultSet!=null) {
			try {
				resultSet.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		if(preparedStatement!=null) {
			try {
				preparedStatement.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		if(resultSet!=null) {
			try {
				resultSet.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
}

测试代码:

package com.yci.jdbc.test;

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

import org.junit.Test;

import com.yci.jdbc.utils.C3P0Utils;

public class TestC3P0U {
	@Test
	public void testAddUser() {
		Connection conn = null;
		PreparedStatement pstmt = null;
		
		try {
			conn=C3P0Utils.getConnection();
			String sql = "insert into tbl_user values(8,?,?)";
			pstmt=conn.prepareStatement(sql);
			pstmt.setString(1, "c3p0_1");
			pstmt.setString(2, "c3p0_1");
			int row = pstmt.executeUpdate();
			if(row>0) {
				System.out.println("添加成功");
			}else {
				System.out.println("添加失败");
		}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			C3P0Utils.release(conn, pstmt, null);
		}
		
		
	}
}

阅读更多
个人分类: java
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

配置C3P3连接池 实现添加数据

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭