数据库连接池

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 }

 

posted @ 2020-03-21 10:31  王余阳  阅读(149)  评论(0)    收藏  举报