数据连接池——c3p0

为什么需要数据连接池呢:因为常规的对数据库进行操作要频繁的建立连接然后关闭接口,这样就会造成极大的浪费

数据连接池的优点:我先开启数个连接,当有需要的时候就拿去用,用完再还回来,避免了接口发频繁开关

建立c3p0数据连接池的步骤:

1.首先我们需要导入jar包

连接数据库的jar包:mysql-connection-java-5.1.24-bin.jar

操作c3p0的jar包:c3p0-0.9.1.2.jar

这些jar包可以在baidu上找,如果找不到可以在评论里留言

2.配置c3p0文件

c3p0的配置文件是固定的,在baidu上就能找到,我在这里贴出我的

c3p0的配置文件名一定是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://127.0.0.1:3306/usta</property>
		<property name="user">root</property>
		<property name="password">root</property>
		<property name="initialPoolSize">5</property><!-- 初始化连接数 -->
		<property name="maxPoolSize">20</property><!-- 最大连接数 -->
	</default-config>
	<!-- 命名配置 -->
	<named-config name="xx">
		<!-- 连接数据库的4个基本配置 -->
		<property name="driverClass">com.mysql.jdbc.Driver</property>
		<property name="jdbcUrl">jdbc:mysql://127.0.0.1:3306/usta</property>
		<property name="user">root</property>
		<property name="password">root</property>
	</named-config>
</c3p0-config>

 3.现在就要开始正式写代码了

①首先写一个c3p0的工具类,其实到目前为止c3p0的部分就弄完了(是不是超级爽,比JDBC的操作简单无数倍啊,上面的直复制粘贴,改个信息就好了,下面的这个工具类也很简单,美滋滋)

package com.xx.train.bdqn.jdbc.utils;
//C3P0工具类
import java.sql.Connection;

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() throws Exception {
		return dataSource.getConnection();
	}
}

②下面我写了一个测试类,除了连接是从池子里取得,其他得操作和JDBC的基本操作一致,向我的数据库里添加一条数据

package com.xx.train.bdqn.jdbc.utils;

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

import com.xx.train.bdqn.jdbc.utils.C3P0Utils;


public class AddC3P0 {
	
	public void addUser(String user,String password) throws Exception{
		Connection con = null;
		PreparedStatement pstmt = null;
		try {
			//2.从池子中获取连接
			con = C3P0Utils.getConnection();
			String sql = "insert into user value(null,?,?)";
			pstmt = con.prepareStatement(sql);
			pstmt.setString(1, user);
			pstmt.setString(2, password);
			int n = pstmt.executeUpdate();
			if(n>0) {
				System.out.println("添加成功");
			}else {
				System.out.println("添加失败");
			}
			
		} catch (Exception e) {
			throw new RuntimeException(e);
		}
	}
}

③调用我写的测试类

package com.xx.train.bdqn.jdbc.test;

import com.xx.train.bdqn.jdbc.utils.AddC3P0;

public class TestC3P0 {

	public static void main(String[] args) throws Exception {
		AddC3P0 a = new AddC3P0();
		String user = "tom";
		String password = "cat";
		a.addUser(user,password);
		
	}
}

猜你喜欢

转载自blog.csdn.net/progammer10086/article/details/81363236
今日推荐