Java--C3P0的使用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hold_on_/article/details/87924582

首先在eclipse中创建一个新的java project,然后本次构建的项目的目录如下:

                                       

      dao:对数据库的操作,同时也是接口的实现

      interface:对接口的声明

      main:主函数(测试类)

      model:创建数据库对象的实体类

      serverce:业务层,业务逻辑的实现

其中c3p0-0.9.5.2.jar是c3p0需要的依赖包这个没有问题,但是需要注意的是它还需要依赖另一个包mchange-commons-java-版本号.jar,其次是数据库连接的驱动需要的包mysql-connector-java-版本号.jar(在这里出现问题的话就看看c3p0出现的问题(一)c3p0出现的问题(二)

具体的事例代码:

interface_do.java:

package dao;

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

import Interface.interface_test;
import model.model_test;

public class interface_do implements interface_test{
	@Override
	public int insert(Connection con, model_test model_test) {
		String sql = "insert into c3p0 values(?, ?)";
		PreparedStatement pstmt;
		try {
			pstmt = con.prepareStatement(sql);
			pstmt.setString(1, model_test.getUsername());
			pstmt.setString(2, model_test.getPassword());
			return pstmt.executeUpdate();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return 0;
		}
	}
}

interface_test.java:

package Interface;

import java.sql.Connection;
import model.model_test;

public interface interface_test {
	int insert (Connection con, model_test model_test);
}

Main.java:

package main;

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

import com.mchange.v2.c3p0.ComboPooledDataSource;

import serverce.insert;
import model.model_test;

public class Main {
	
	static insert serverce = new insert();
	static model_test model_test = new model_test();
	private static String username = "Hello";
	private static String password = "World";
	
	public static void main(String[] args) {
		Connection con = null;
		ComboPooledDataSource pool = new ComboPooledDataSource();
		try {
			con = pool.getConnection();
			model_test.setUsername(username);
			model_test.setPassword(password);
			serverce.insert(con, model_test);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally {
			try {
				con.close();
			} catch (SQLException e2) {
				// TODO: handle exception
				e2.printStackTrace();
			}
		}
	}
}

model_test.java:

package model;

public class model_test {
	private String username;
	private String password;
	
	public model_test() {
		super();
	}
	public model_test(String username, String password) {
		
		super();
		this.username = username;
		this.password = password;
	}
	
	public void setUsername(String username) {
		this.username = username;
	}
	public String getUsername() {
		return username;
	}
	
	public void setPassword(String password) {
		this.password = password;
	}
	public String getPassword() {
		return password;
	}
}

insert.java:

package serverce;

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

import dao.interface_do;
import model.model_test;

public class insert {
	
	interface_do insert_dao = new interface_do();
	
	public void insert(Connection con, model_test model_test) throws SQLException {
		int flag = insert_dao.insert(con, model_test);
		if(flag == 0) {
			System.out.println("You are wrong!!!");
		}
		else {
			System.out.println("You are right!!!");
		}
	}
}

c3p0-config.xml:

<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
	<default-config>  
        <property name="driverClass">com.mysql.cj.jdbc.Driver</property>
        <property name="jdbcUrl">jdbc:mysql://localhost:3306/c3p0_test?serverTimezone=GMT</property>  
        <property name="user">root</property>  
        <property name="password">zhang123456</property>  
             <!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default:3 -->  
        <property name="acquireIncrement">5</property>  
             <!--初始化的连接数,取值应在minPoolSize与maxPoolSize之间。Default: 3-->  
        <property name="initialPoolSize">10</property>  
             <!--连接池中保留的最小连接数-->  
        <property name="minPoolSize">5</property>  
             <!--连接池中保留的最大连接数。Default:15 -->  
        <property name="maxPoolSize">20</property>  
             <!--定义在从数据库获取新连接失败后重复尝试的次数。Default: 30 -->  
        <property name="acquireRetryAttempts">30</property>  
             <!--两次连接中间隔时间,单位毫秒。Default: 1000 -->  
        <property name="acquireRetryDelay">1000</property>  
             <!--连接关闭时默认将所有未提交的操作回滚。Default: false -->  
         <property name="autoCommitOnClose">false</property>  
    </default-config>
</c3p0-config>

运行结果:

数据库: 

猜你喜欢

转载自blog.csdn.net/hold_on_/article/details/87924582