您的位置:首页 > 数据库

使用C3p0连接池连接数据库

2020-04-02 07:50 896 查看

package com.test.c3p0;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import com.mchange.v2.c3p0.ComboPooledDataSource;
//有三种方式获取到配置文件信息,一种是xml,一种是properties,一种是System配置,如下的系统配置
public class C3p0Util {
// 连接池可以极大的改善用户的 Java 应用程序的性能,同时减少全部资源的使用。连接池主要的优点有:
// 减少连接创建时间 虽然与其它数据库相比 GBase 提供了较为快速连接功能,但是创建新的 JDBC
// 连接仍会招致网络和 JDBC 驱动的开销。如果这类连接是“循环”使用的,使用该方式这些花销就可避免。
// 简化的编程模式 当使用连接池时,每一个单独的线程能够像创建了一个自己的 JDBC 连接一样操作,允许用
// 户直接使用JDBC编程技术。 受控的资源使用 如果用户不使用连接池,而是每当线程需要时创建一个新的连接,
// 那么用户的应用程序的资源使用会产生非常大的浪费并且可能会导致高负载下的异常发生。
// 配置了C3P0作为连接池子,调用服务器Connection连接时,在调用完了之后会将连接返还回去。
private static ComboPooledDataSource dataSource = new ComboPooledDataSource();
public static Connection getConnection(){
try {

return dataSource.getConnection();
} catch (SQLException e) {

throw new RuntimeException("服务器繁忙!");
}
}

public static void closeAll(ResultSet rs,PreparedStatement ps,Connection conn){

if(rs!=null){
try {
rs.close();
} catch (SQLException e) {

e.printStackTrace();
}rs=null;
}if(ps!=null){
try {
ps.close();
} catch (SQLException e) {

e.printStackTrace();
}ps=null;
}if(conn!=null){
try {
conn.close();
} catch (SQLException e) {

e.printStackTrace();
}conn=null;
}}

//这是System配置方式:
// static{
// try {
// dataSource.setDriverClass( “org.postgresql.Driver” );
// dataSource.setJdbcUrl( “jdbc:postgresql://localhost/testdb” );
// dataSource.setUser(“swaldman”);
// dataSource.setPassword(“test-password”);
// dataSource.setMinPoolSize(5);
// dataSource.setAcquireIncrement(5);
// dataSource.setMaxPoolSize(20);
// } catch (Exception e) {
//
// e.printStackTrace();
// }
//
// }

}
//配置XML信息:

<?xml version="1.0" encoding="UTF-8"?> com.microsoft.sqlserver.jdbc.SQLServerDriver jdbc:sqlserver://localhost:1433;DatabaseName=DBLogin sa 123 10 30 100 10 200 com.mysql.jdbc.Driver jdbc:mysql:localhost:3306/DBLogin sa 123 10 30 100 10 200

//应用C3p0实现对数据库的增删改查
import java.sql.Connection;
import java.sql.PreparedStatement;
import org.junit.Test;
public class C3p0DBCP {
@Test
public void test(){
Connection conn=null;
PreparedStatement ps=null;
//使用连接池创建链接
try {

conn=C3p0Util.getConnection();
System.out.println(conn.getClass().getName());
//插入数据数据

// ps=conn.prepareStatement(“insert into users(username,password,email,birthday) values (‘ls’,‘8848’,‘416@qq.com’,‘2020-3-31 14:57:00’)”);
// ps.executeUpdate();
//删除数据
// ps=conn.prepareStatement(“delete from users where id=7”);
// ps.executeUpdate();
//修改数据
// ps=conn.prepareStatement(“update users set username=‘mht’ where id=7”);
// ps.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}
C3p0Util.closeAll(null, ps, conn);

}

}

  • 点赞
  • 收藏
  • 分享
  • 文章举报
是南山呀. 发布了11 篇原创文章 · 获赞 0 · 访问量 175 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: