• JDBC从连接池获取连接


    DBCP介绍

    DBCP是Java开源连接池中常用的一种,它一般应用在使用数据库频繁的系统中,可以处理大量数据库连接请求。

    简单配置

    driverClassName=com.mysql.jdbc.Driver
    url=jdbc:mysql://127.0.0.1:3306/test
    username=root
    password=123456
    maxActive=50
    maxIdle=20
    maxWait=60000
    

    添加依赖

    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-dbcp2</artifactId>
        <version>2.1.1</version>
    </dependency>
    

    代码展示

    DBUtil工具类

    import java.io.InputStream;
    import java.sql.Connection;
    import java.sql.SQLException;
    import java.util.Properties;
    import javax.sql.DataSource;
    import org.apache.commons.dbcp2.BasicDataSourceFactory;
    public class DBUtil {
        private static DataSource ds;
        private static Connection conn;
        static {
            try {
                Properties properties = new Properties();
                InputStream inStream = DBUtil.class.getResourceAsStream("dataSouce.properties");
                properties.load(inStream);
                ds = BasicDataSourceFactory.createDataSource(properties);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        // 获取连接
        public static Connection getConn() throws SQLException {
            if (conn == null || conn.isClosed()) {
                conn = ds.getConnection();
            }
            return conn;
        }
        // 回收连接
        public static void closeConn() {
            try {
                if (conn != null && !conn.isClosed()) {
                    conn.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            } finally {
                conn = null;
            }
        }
    }
    

    操作数据库

    import java.sql.Connection;
    import java.sql.Statement;
    public class Test {
        public static void main(String[] args) throws Exception {
            Connection conn = DBUtil.getConn();
            conn.setAutoCommit(false);
            Statement stmt = conn.createStatement();
            int rs = stmt.executeUpdate("DELETE FROM user WHERE name='qiang'");
            if (rs > 0) {
                System.out.println("更新成功!");
                conn.rollback();
            } else {
                System.out.println("更新失败!");
                conn.commit();
            } finally {
                stmt.close();
                DBUtil.closeConn();
            }     
        }
    }
    
  • 相关阅读:
    转 Python常见数据结构整理
    转 Python爬虫实战二之爬取百度贴吧帖子
    转 Python——UnicodeEncodeError: 'ascii' codec can't encode/decode characters
    慕课 python 操作数据库2 银行转账实例
    转 Python爬虫实战一之爬取糗事百科段子
    SQL 锁 lock
    SQL SERVER CROSS/OUTER APPLY 用法
    sql server 怎样用select语句调用自定义表值函数
    计算日期类型
    行转列:SQL SERVER PIVOT与用法解释
  • 原文地址:https://www.cnblogs.com/feiqiangsheng/p/11406470.html
Copyright © 2020-2023  润新知