JDBC连接池&DBUtils
来源:互联网 发布:刘德华 知乎 编辑:程序博客网 时间:2024/05/22 03:03
1、连接池
在程序开始的时候,可以创建几个连接,将连接放入到连接池中.用户使用连接的时候,可以从连接池中进行获取.用完之后,可以将连接归还连接池。
连接池的接口:javax.sql.DataSource
2、自定义连接池
MyConnection:
import java.sql.Array;import java.sql.Blob;import java.sql.CallableStatement;import java.sql.Clob;import java.sql.Connection;import java.sql.DatabaseMetaData;import java.sql.NClob;import java.sql.PreparedStatement;import java.sql.SQLClientInfoException;import java.sql.SQLException;import java.sql.SQLWarning;import java.sql.SQLXML;import java.sql.Savepoint;import java.sql.Statement;import java.sql.Struct;import java.util.LinkedList;import java.util.Map;import java.util.Properties;import java.util.concurrent.Executor;//1.实现同一个接口Connectionpublic class MyConnection implements Connection { //3.定义一个变量 private Connection conn; private LinkedList<Connection> pool; // 2.编写一个构造方法(参数使用了面相对象的多态特性) public MyConnection(Connection conn,LinkedList<Connection> pool) { this.conn=conn; this.pool=pool; } //4.书写需要增强的方法 @Override public void close() throws SQLException { pool.add(conn); } /** * 此方法必须覆盖!否则会出现空指针异常!!! */ @Override public PreparedStatement prepareStatement(String sql) throws SQLException { return conn.prepareStatement(sql); } //....省略其他}
MyDataSource
import java.io.PrintWriter;import java.sql.Connection;import java.sql.SQLException;import java.sql.SQLFeatureNotSupportedException;import java.util.LinkedList;import java.util.logging.Logger;import javax.sql.DataSource;import cn.itheima.jdbc.utils.JDBCUtils_V3;public class MyDataSource implements DataSource{ //1.创建1个容器用于存储Connection对象 private static LinkedList<Connection> pool = new LinkedList<Connection>(); //2.创建5个连接放到容器中去 static{ for (int i = 0; i < 5; i++) { Connection conn = JDBCUtils_V3.getConnection(); //放入池子中connection对象已经经过改造了 MyConnection myconn = new MyConnection(conn, pool); pool.add(myconn); } } /** * 重写获取连接的方法 */ @Override public Connection getConnection() throws SQLException { Connection conn = null; //3.使用前先判断 if(pool.size()==0){ //4.池子里面没有,我们再创建一些 for (int i = 0; i < 5; i++) { conn = JDBCUtils_V3.getConnection(); //放入池子中connection对象已经经过改造了 MyConnection myconn = new MyConnection(conn, pool); pool.add(myconn); } } //5.从池子里面获取一个连接对象Connection conn = pool.remove(0); return conn; } /** * 归还连接对象到连接池中去 */ public void backConnection(Connection conn){ pool.add(conn); } //....省略其他}
使用
@Testpublic void testAddUser1() { Connection conn = null; PreparedStatement pstmt = null; // 1.创建自定义连接池对象 DataSource dataSource = new MyDataSource(); try { // 2.从池子中获取连接 conn = dataSource.getConnection(); String sql = "insert into tbl_user values(null,?,?)"; //3.必须在自定义的connection类中重写prepareStatement(sql)方法 pstmt = conn.prepareStatement(sql); pstmt.setString(1, "吕布"); pstmt.setString(2, "貂蝉"); int rows = pstmt.executeUpdate(); if (rows > 0) { System.out.println("添加成功!"); } else { System.out.println("添加失败!"); } } catch (Exception e) { throw new RuntimeException(e); } finally { JDBCUtils_V3.release(conn, pstmt, null); }}
3、C3P0连接池
http://www.mchange.com/projects/c3p0/
阅读全文
0 0
- JDBC连接池&DBUtils
- JDBC连接池&DBUtils
- Day11-JDBC连接池&DBUtils
- (五)JDBC连接池&DBUtils—DBUtils完成CRUD
- JDBC之事务、连接池、dbutils
- JDBC、事物、连接池、DBCP、C3P0、DBUtils
- JDBC之事务、连接池、dbutils
- (一)JDBC连接池&DBUtils—自定义连接池
- JDBC dbutils以及c3p0 dbcp连接池的使用
- (三)JDBC连接池&DBUtils—C3P0的使用
- Jdbc基础 工具类 连接池到dbutils
- JDBC连接和DBUtils的使用详解
- 连接池&DBUtils
- DBUtils和连接池
- JDBC、事务、数据库连接池、DBUtils
- (二)JDBC连接池&DBUtils—自定义连接池增强方法
- (四)JDBC连接池&DBUtils—DBCP连接池的使用
- Java Web(十) JDBC的增删改查,C3P0等连接池,dbutils框架的使用
- leetcode---candy---dp
- 随机过程
- Spring 事务管理
- 网易笔试编程题——两种排序方法
- 网易秋招2018笔试题 重排数列
- JDBC连接池&DBUtils
- 虚拟化明星——深挖轻量级容器docker
- dpdk框架优化思路
- mysql 数据库整理——数据库添加删除
- 关于JAVAWeb文件上传
- 腾讯—素数对
- 梯度下降(Gradient Descent)
- 将表 A 和 表 B 中数据 存储到另一个表C中
- 链式前向星