数据库连接池
1. Druid:数据库连接池实现技术,由阿里巴巴提供的
2.步骤:
1).导入jar包 druid-1.0.9.jar
2).定义配置文件:
* 是properties形式的
* 可以叫任意名称,可以放在任意目录下
3).加载配置文件。Properties
4).获取数据库连接池对象:通过工厂来来获取 DruidDataSourceFactory
5). 获取连接:getConnection
3.代码样本:
在src -> utils包下创建 JDBCUtils
1 package utils; 2 3 import com.alibaba.druid.pool.DruidDataSourceFactory; 4 5 import javax.sql.DataSource; 6 import java.io.IOException; 7 import java.sql.Connection; 8 import java.sql.ResultSet; 9 import java.sql.SQLException; 10 import java.sql.Statement; 11 import java.util.Properties; 12 13 public class JDBCUtils { 14 //定义成员变量 DataSource 15 private static DataSource dataSource; 16 17 /** 18 * Druid连接池的工具类 19 */ 20 static { 21 try { 22 Properties pro = new Properties(); 23 pro.load(JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties")); 24 dataSource = DruidDataSourceFactory.createDataSource(pro); 25 } catch (IOException e) { 26 e.printStackTrace(); 27 } catch (Exception e) { 28 e.printStackTrace(); 29 } 30 } 31 32 /** 33 * 获取连接 34 */ 35 public static Connection getConnection() throws SQLException { 36 return dataSource.getConnection(); 37 } 38 39 /** 40 * 释放资源 41 */ 42 public static void close(ResultSet rs, Statement stmt, Connection conn) { 43 if (rs != null) { 44 try { 45 rs.close(); 46 } catch (SQLException e) { 47 e.printStackTrace(); 48 } 49 } 50 51 if (stmt != null) { 52 try { 53 stmt.close(); 54 } catch (SQLException e) { 55 e.printStackTrace(); 56 } 57 } 58 59 if (conn != null) { 60 try { 61 conn.close();//归还连接 62 } catch (SQLException e) { 63 e.printStackTrace(); 64 } 65 } 66 } 67 68 public static void close(Statement stmt, Connection conn) { 69 close(null, stmt, conn); 70 } 71 72 public static DataSource getDataSource() { 73 return dataSource; 74 } 75 76 }
测试:向表中增加一行数据
代码:
1 import java.sql.Connection; 2 import java.sql.PreparedStatement; 3 import java.sql.SQLException; 4 5 public class Demo6 { 6 public static void main(String[] args) { 7 Connection connection = null; 8 PreparedStatement preparedStatement = null; 9 try { 10 connection = JDBCUtils.getConnection(); 11 String sql = "insert into account values(null,?,?,?)"; 12 preparedStatement = connection.prepareStatement(sql); 13 preparedStatement.setString(1, "许家印"); 14 preparedStatement.setString(2, "123369"); 15 preparedStatement.setString(3, "123369@1"); 16 int count = preparedStatement.executeUpdate(); 17 if (count > 0) { 18 System.out.println("成功"); 19 } else { 20 System.out.println("失败"); 21 } 22 } catch (SQLException e) { 23 e.printStackTrace(); 24 } finally { 25 JDBCUtils.close(preparedStatement,connection); 26 } 27 } 28 }

浙公网安备 33010602011771号