zoukankan      html  css  js  c++  java
  • 数据库连接池Druid案例

    DruidUtils工具类

    由于初始化连接池是一个重复的操作,所以可以写一个工具类,加上静态代码块,初始化连接池,以后每次调用工具类即可实现对连接池的初始化和关闭资源等操作
    public class DruidUtils {
    /*工具类 */

    private static DataSource ds;
    
    
    static {
        Properties pro = new Properties();
        try {
            pro.load(DruidUtils.class.getClassLoader().getResourceAsStream("druid.properties"));//需要在DruidUtils的src下创建properties的配置文件
            ds = DruidDataSourceFactory.createDataSource(pro);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    public static Connection getConnection() throws SQLException {
        return ds.getConnection();
    
    
    }
    
    public static void close(Statement stmt, Connection conn) {
        if (stmt != null) {
            try {
                stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (conn != null) {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    
    public static void close(ResultSet rs, Statement stmt, Connection conn) {
        if (rs != null) {
            try {
                rs.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
        if (stmt != null) {
            try {
                stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (conn != null) {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    
    public static DataSource getDataSource() {
        return ds;
    }
    

    }

    配置文件druid.properties

    driverClassName=com.mysql.jdbc.Driver
    url=jdbc:mysql:///db1?characterEncoding=utf8&useSSL=true
    username=root
    password=123
    initialSize=5
    maxActive=10
    maxWait=3000

    DruidDemo

        PreparedStatement pstmt1 = null;
        PreparedStatement pstmt2 = null;
        Connection conn = null;
        /*完成添加操作*/
        try {
            conn = DruidUtils.getConnection();
            String sql1 = "select * from jpj";
            String sql2 = "insert into jpj(city,area,airport) values(?,?,?)";
            /*获取pstmt对象*/
            pstmt1 = conn.prepareStatement(sql2);
            pstmt1.setString(1, "tokyo");
            pstmt1.setString(2, "tokyo area");
            pstmt1.setString(3, "Narita International Airport");
            int count = pstmt1.executeUpdate();
            System.out.println(count);
    
            pstmt2 = conn.prepareStatement(sql1);
            ResultSet rs = pstmt2.executeQuery();
            while(rs.next()){
                String city = rs.getString(1);
                String area = rs.getString(2);
                String airport = rs.getString(3);
                String timestamp = rs.getString(4);
                System.out.println(city+"---"+area+"---"+airport+"---"+timestamp);
    
            }
    
    
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        } finally {
            DruidUtils.close( pstmt1, conn);
            DruidUtils.close( pstmt2, conn);
    
        }
    

    这里向表里面添加数据,需要注意的是Statement有两个,一个是java.sql下的,一个是java.mysql.jdbc下的,需要的是第一个不要导错包。

    根据表里面的数据进行添加后得到的结果

  • 相关阅读:
    SuperMap房产测绘成果管理平台
    SuperMap产权登记管理平台
    Android adb shell am 的用法(1)
    由浅入深谈Perl中的排序
    Android 内存监测和分析工具
    Android 网络通信
    adb server is out of date. killing...
    引导页使用ViewPager遇到OutofMemoryError的解决方案
    adb logcat 详解
    How to send mail by java mail in Android uiautomator testing?
  • 原文地址:https://www.cnblogs.com/ruonan1997/p/14069043.html
Copyright © 2011-2022 走看看