java JDBC 自定义连接池
来源:互联网 发布:json.parse 解析出错 编辑:程序博客网 时间:2024/06/09 19:58
当执行sql语句比较频繁 。每一次执行 连接一次数据库 关闭连接 比较浪费资源。
连接池是来重复使用Connection 提交效率.
文件结构:
文件JDBCTool.java
package jdbc;import jdbc_u1.MyDataSourse;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;public class JDBCTool { private static Connection conn=null; private static PreparedStatement pstmt=null; private static ResultSet rs=null; private static MyDataSourse dataSourse=new MyDataSourse(); public static void testinsert(String uname,String upassword) { try { //conn=JDBCUtils.getConnection(); conn=dataSourse.getConnection(); String sql = "insert into db.users values(null,?,?)"; pstmt=conn.prepareStatement(sql); pstmt.setString(1,uname); pstmt.setString(2,upassword); int row=pstmt.executeUpdate(); if(row>0) { System.out.println("注册成功"); } else System.out.println("注册失败"); } catch (Exception e) { System.out.println("注册失败"); } finally { //JDBCUtils.release(conn,pstmt,rs); dataSourse.BackConnection(conn); } } public static void testSelect(String uname,String upassword) { try { //conn=JDBCUtils.getConnection(); conn=dataSourse.getConnection(); String sql="select * from db.users where uname=? and upassword=? "; pstmt=conn.prepareStatement(sql); pstmt.setString(1,uname); pstmt.setString(2,upassword); rs=pstmt.executeQuery(); if(rs.next()) { System.out.println("验证成功"); } else System.out.println("验证失败"); } catch (Exception e) { System.out.println("验证失败"); } finally { //JDBCUtils.release(conn,pstmt,rs); dataSourse.BackConnection(conn); } } public static void testUpdate(String oldname,String oldpassword,String newname,String newpassword) { try { // conn=JDBCUtils.getConnection(); conn=dataSourse.getConnection(); String sql = "update db.users set uname=?,upassword=? where uname=? and upassword=?"; pstmt=conn.prepareStatement(sql); pstmt.setString(1,newname); pstmt.setString(2,newpassword); pstmt.setString(3,oldname); pstmt.setString(4,oldpassword); int row=pstmt.executeUpdate(); if(row>0) { System.out.println("修改成功"); } else System.out.println("修改失败"); } catch (Exception e) { System.out.println("修改失败"); } finally { //JDBCUtils.release(conn,pstmt,rs); dataSourse.BackConnection(conn); } } public static void delete(String uname,String upassword) { try { //conn=JDBCUtils.getConnection(); conn=dataSourse.getConnection(); String sql = "delete from db.users where uname=? and upassword=?"; pstmt=conn.prepareStatement(sql); pstmt.setString(1,uname); pstmt.setString(2,upassword); int row=pstmt.executeUpdate(); if(row>0) { System.out.println("注销成功"); } else System.out.println("注销失败"); } catch (Exception e) { System.out.println("注销失败"); } finally { //JDBCUtils.release(conn,pstmt,rs); dataSourse.BackConnection(conn); } }}
JDBCUtils.java
package jdbc;import java.sql.*;import java.util.ResourceBundle;public class JDBCUtils { private static String driver; private static String url; private static String username; private static String password; static{ ResourceBundle bundle= ResourceBundle.getBundle("db"); driver=bundle.getString("driver"); url=bundle.getString("url"); username=bundle.getString("username"); password=bundle.getString("password"); } public static Connection getConnection() { Connection conn=null; try { Class.forName("com.mysql.jdbc.Driver"); conn= DriverManager.getConnection(url,username,password); } catch (Exception e) { e.printStackTrace(); } return conn; } public static void release(Connection conn, PreparedStatement pstmt, ResultSet rs) { if(conn!=null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } if(pstmt!=null) { try { pstmt.close(); } catch (SQLException e) { e.printStackTrace(); } } if(rs!=null) { try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } }}
MyDataSourse.java
package jdbc_u1;import jdbc.JDBCUtils;import javax.sql.DataSource;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;public class MyDataSourse implements DataSource{ //创建存储Connection的一个容器 private static LinkedList<Connection> pool = new LinkedList<Connection>(); //创建5个连接 static { for(int i=0;i<5;i++) pool.add(JDBCUtils.getConnection()); } //从池子里获取一个连接对象 @Override public Connection getConnection() throws SQLException { Connection conn=null; if(pool.size()==0) { for(int i=0;i<5;i++) pool.add(JDBCUtils.getConnection()); } conn=pool.removeFirst(); return conn; } //归还 public void BackConnection(Connection conn) { pool.add(conn); } @Override public Connection getConnection(String username, String password) throws SQLException { return null; } @Override public PrintWriter getLogWriter() throws SQLException { return null; } @Override public void setLogWriter(PrintWriter out) throws SQLException { } @Override public void setLoginTimeout(int seconds) throws SQLException { } @Override public int getLoginTimeout() throws SQLException { return 0; } @Override public Logger getParentLogger() throws SQLFeatureNotSupportedException { return null; } @Override public <T> T unwrap(Class<T> iface) throws SQLException { return null; } @Override public boolean isWrapperFor(Class<?> iface) throws SQLException { return false; }}
db.properties
driver=com.mysql.jdbc.Driverurl=jdbc:mysql://localhost:3306?characterEncoding=utf8username=rootpassword=123456
Main.java
import jdbc.JDBCTool;public class Main { public static void main(String[] args){ JDBCTool.testSelect("abc","uabc"); JDBCTool.testSelect("woc","absd"); }}
阅读全文
0 0
- java JDBC 自定义连接池
- 自定义jdbc连接池
- jdbc----自定义连接池
- Java-JDBC连接池
- JDBC学习03-自定义连接池
- java oracle jdbc 连接池
- [疯狂Java]JDBC:连接池
- 自定义JDBC连接池及常用连接池介绍
- (一)JDBC连接池&DBUtils—自定义连接池
- Java技术回顾之JDBC:连接池
- jdbc pool java连接池技术
- JAVA JDBC 连接池的设计应用
- jdbc pool java连接池技术
- Java技术回顾之JDBC:连接池
- java JDBC 使用C3P0连接池
- java JDBC 使用DBCP连接池
- Java 自定义JDBC类库
- 使用装饰着设计模式开发自定义jdbc连接池
- Neutron总结-为instance设置静态IP(OpenStack Mitaka版)
- 即使删了全库,保证半小时恢复
- C++标准库之queue(各函数及其使用全)
- 前端框架存在的意义
- HDU1847 Good Luck in CET-4 Everybody!
- java JDBC 自定义连接池
- java开发工具下载
- 平面扫描
- 24.开源项目--git分支衍合
- MYSQL函数ISNULL、IFNULL、NULLIF、IF、CASE WHEN
- VS 添加参数调试
- Android中的本地服务、远程服务和系统服务
- UEditor文本编辑器
- particle filtering---粒子滤波(讲的很通俗易懂)