c3p0连接池

c3p0连接池

使用步骤

java+mysql

1.导入 c3p0 jar包,和相关依赖包
2.在src下配置c3p0-config.xml文件
在src下面新建c3p0-config.xml文件,在xml文件里面配置以下内容

	①:自定义配置
	   <c3p0-config>
        		<named-config name="线程池名">
        		//mysql数据库驱动
				<property name="driverClass">com.mysql.jdbc.Driver</property>
				<property name="jdbcUrl">jdbc:mysql://localhost:3306/库名</property>
				<property name="user">root</property>
				<property name="password">root</property>
				//初始化线程池数
				<property name="initialPoolSize">5</property>
				//最大线程池连接数
				<property name="maxPoolSize">10</property>
			</named-config>
       </c3p0-config>
       
    ②: 默认配置
  <c3p0-config>
    	<default-config >
			<property name="driverClass">com.mysql.jdbc.Driver</property>
			<property name="jdbcUrl">jdbc:mysql://localhost:3306/student</property>
			<property name="user">root</property>
			<property name="password">root</property>	
			<property name="initialPoolSize">5</property>
			<property name="maxPoolSize">10</property>	
  	</default-config>
<c3p0-config>

3.获取连接池

//DataSource连接池接口
DataSource  ds=new ComboPoolSource("连接池名");

4.通过连接池获取连接对象

ds.getConnection();

5.归还连接

 ds.close();

7.JDBC c3p0连接池小案例
①:工具类

			package com.qf.edu.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 JDBCUtils {
			   public static DataSource ds=null;		 
				static{
				//1.获取连接池
					ds=new ComboPooledDataSource("c3p0");	
				}
				//2.在连接池里面拿已经放好的连接对象
				public  static Connection  getConnection() throws SQLException{	
					Connection conn = ds.getConnection();
					return conn;
				}
				//3.归还连接,这里传入的是上面的已经拿到的连接对象.所以关闭的是拿到的连接池里面的对象
				public static void close(PreparedStatement ps, Connection conn) {
					if (ps != null) {
						try {
							ps.close();
						} catch (SQLException e) {
							e.printStackTrace();
						}
						if (conn != null) {
							try {
								conn.close();
							} catch (SQLException e) {
								e.printStackTrace();
							}
						}
					}
				}
				public static void close(PreparedStatement ps, Connection conn,ResultSet rs){
					close(ps, conn);
					if (rs!=null) {
						try {
							rs.close();
						} catch (SQLException e) {
							e.printStackTrace();
						}
					}
				}
			}

②:添加功能

package com.qf.edu.service;
import java.sql.Connection;
import java.sql.PreparedStatement;
import com.qf.edu.utils.JDBCUtils;

public class JdbcService {
		/**
		 * 往数据库里面添加数据的功能
		 * @param salary 
		 * @param age 
		 * @param name 
		 * @param id 
		 * @return row
		 */
		public int insert( String name, int age, double salary){	
			Connection conn=null;
			PreparedStatement ps=null;
			int row=0;
			try {
				//1.从连接池里面获取连接对象
			    conn = JDBCUtils.getConnection();
			    String sql="insert into stu values(null,?,?,?)";
			    ps = conn.prepareStatement(sql);   
			    ps.setString(1, name);
			    ps.setInt(2, age);
			    ps.setDouble(3, salary);
			    row = ps.executeUpdate();	    
			} catch (Exception e) {
				e.printStackTrace();
			}finally{
			//归还连接
				JDBCUtils.close(ps, conn);
			}	
			return row;
		}
	}

③:测试类

	package com.qf.edu.test;		
	import java.util.Scanner;
	import com.qf.edu.service.JdbcService;
			
	public class JdbcTest {
		public static void main(String[] args) {
			insert();
		}	
			public static void insert(){
				Scanner sc=new Scanner(System.in);
				JdbcService js=new JdbcService();
				System.out.println("请输入你要插入的name:");
				String name=sc.next();
				System.out.println("请输入你要插入的age:");
				int age=sc.nextInt();
				System.out.println("请输入你要插入的salary:");
				double salary=sc.nextDouble();
				int row = js.insert( name, age, salary);
				if (row>0) {
					System.out.println("插入成功");
				}else {
					System.out.println("插入失败");
				}
		}		
	}

④c3p0-config.xml文件配置

	<c3p0-config>
		<named-config  name="c3p0">
			<property name="driverClass">com.mysql.jdbc.Driver</property>
			<property name="jdbcUrl">jdbc:mysql://localhost:3306/student</property>
			<property name="user">root</property>
			<property name="password">root</property>	
			<property name="initialPoolSize">5</property>
			<property name="maxPoolSize">10</property>	
		</named-config>
		
	<!-- 默认c3p0配置 -->
		<default-config >
			<property name="driverClass">com.mysql.jdbc.Driver</property>
			<property name="jdbcUrl">jdbc:mysql://localhost:3306/student</property>
			<property name="user">root</property>
			<property name="password">root</property>	
			<property name="initialPoolSize">5</property>
			<property name="maxPoolSize">10</property>	
		</default-config>
	</c3p0-config>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值