数据库连接池

数据库连接池

数据库连接池简介

数据库连接池是个容器,负责分配、管理数据库连接(Connection)

●它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个

●释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏

好处:

资源重用

提升系统相应速度

避免数据库连接遗漏

数据库连接池实现

●标准接口:DateSource

官方(SUM)提供的数据库连接池标准接口,由第三方组织实现此接口

功能:获取连接

Connection  getConnection();

●常见的数据库连接池

DBCP

C3P0

Druid

●Druid(德鲁伊)

Druid连接池是阿里巴巴开源的数据库连接池项目

功能强大,性能优秀,是Java语言最好的数据库连接池之一

Druid使用步骤

1.导入jar包

2.定义配置文件

3.加载配置文件

4.获取连接池对象

5.获取数据库连接

代码实现:

public class DruidDemo {
    public static void main(String[] args) throws Exception {
        //1.导入jar包
​
        //2.定义配置文件
​
        //3.加载配置文件
        Properties prop=new Properties();
        prop.load(new FileInputStream("jdbc-demo/src/druid.properties"));
        //4.获取连接池对象
        DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);
​
        //5.获取数据库连接
        Connection connection = dataSource.getConnection();
​
        System.out.println(connection);
​
    }
}

练习:完成商品品牌数据的增删改查操作

●查询:查询所有数据

@Test
    public void testSelectAll() throws Exception {
        //1.获取Connection
        Properties prop=new Properties();
        prop.load(new FileInputStream("src/druid.properties"));
        //获取连接池对象
        DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);
​
        //获取数据库连接
        Connection conn = dataSource.getConnection();
​
        //2.定义sql语句
        String sql="select * from tb_brand";
​
        //3.获取pstmt对象
        PreparedStatement pstmt = conn.prepareStatement(sql);
​
        //4.设置参数
​
        //5.执行SQL
        ResultSet rs = pstmt.executeQuery();
​
        //6.处理结果  List<Brand>
        Brand brand=null;
        List<Brand> brands=new ArrayList<>();
        while (rs.next()){
            //获取数据
            int id = rs.getInt("id");
            String brandName = rs.getString("brand_name");
            String companyName = rs.getString("company_name");
            int ordered = rs.getInt("ordered");
            String description = rs.getString("description");
            int status = rs.getInt("status");
​
            //封装Brand对象
            brand = new Brand ();
            brand.setId(id);
            brand.setBrandName(brandName);
            brand.setCompanyName(companyName);
            brand.setOrdered(ordered);
            brand.setDescription(description);
            brand.setStatus(status);
​
            //装载集合
            brands.add(brand);
        }
​
        System.out.println(brands);
​
        //7.资源关闭
        rs.close();
        pstmt.close();;
        conn.close();
    }

●添加数据

//添加数据
    @Test
    public void testAdd() throws Exception {
        //接收用户提交的参数
        String brandName="香飘飘";
        String companyName="香飘飘";
        int ordered=1;
        String description="绕地球一圈";
        int status=1;
​
        //加载配置文件
        Properties prop=new Properties();
        prop.load(new FileInputStream("src/druid.properties"));
        //获取连接池对象
        DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);
​
        //获取数据库连接
        Connection conn = dataSource.getConnection();
​
        //2.定义sql语句
        String sql="insert into tb_brand(brand_name, company_name, ordered, description, status) values(?,?,?,?,?)";
​
        //3.获取pstmt对象
        PreparedStatement pstmt = conn.prepareStatement(sql);
​
        //4.设置参数
        pstmt.setString(1,brandName);
        pstmt.setString(2,companyName);
        pstmt.setInt(3,ordered);
        pstmt.setString(4,description);
        pstmt.setInt(5,status);
​
        //5.执行SQL
        int count = pstmt.executeUpdate();//影响的函数
​
        //处理结果
        System.out.println(count>0);
        //7.资源关闭
        pstmt.close();;
        conn.close();
    }

●根据id修改

//根据id修改
    @Test
    public void testUpdate() throws Exception {
        //接收用户提交的参数
        String brandName="香飘飘";
        String companyName="香飘飘";
        int ordered=1000;
        String description="绕地球三圈";
        int status=1;
        int id=4;
​
        //加载配置文件
        Properties prop=new Properties();
        prop.load(new FileInputStream("src/druid.properties"));
        //获取连接池对象
        DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);
​
        //获取数据库连接
        Connection conn = dataSource.getConnection();
​
        //2.定义sql语句
        String sql="update tb_brand\n" +
                "set brand_name=?,\n" +
                "    company_name=?,\n" +
                "    ordered=?,\n" +
                "    description=?,\n" +
                "    status=?\n" +
                "where id=?;";
​
        //3.获取pstmt对象
        PreparedStatement pstmt = conn.prepareStatement(sql);
​
        //4.设置参数
        pstmt.setString(1,brandName);
        pstmt.setString(2,companyName);
        pstmt.setInt(3,ordered);
        pstmt.setString(4,description);
        pstmt.setInt(5,status);
        pstmt.setInt(6,id);
​
        //5.执行SQL
        int count = pstmt.executeUpdate();//影响的函数
​
        //处理结果
        System.out.println(count>0);
        //7.资源关闭
        pstmt.close();;
        conn.close();
    }

●根据id删除

//根据id删除
    @Test
    public void testDeleteById() throws Exception {
        //接收参数
        int id=4;
​
        //加载配置文件
        Properties prop=new Properties();
        prop.load(new FileInputStream("src/druid.properties"));
        //获取连接池对象
        DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);
​
        //获取数据库连接
        Connection conn = dataSource.getConnection();
​
        //2.定义sql语句
        String sql="delete from tb_brand where id=?";
​
        //3.获取pstmt对象
        PreparedStatement pstmt = conn.prepareStatement(sql);
​
        //4.设置参数
        pstmt.setInt(1,id);
​
        //5.执行SQL
        int count = pstmt.executeUpdate();//影响的函数
​
        //处理结果
        System.out.println(count>0);
        //7.资源关闭
        pstmt.close();;
        conn.close();
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值