数据库连接池初使用

一、数据库连接池简介

1.数据库连接池是一个容器,用来分配和管理数据库的连接,它允许多个应用程序重复使用同一批现有的数据库连接,而不是重新创建新的连接。

2.若一个数据库连接的空闲时间超出最大空闲时间,则强制释放此连接。

连接池就是一开始创建一些连接对象并存储起来,当用户需要连接数据库时,用户只需从连接池中获取一个连接进行使用,而不必自己创建连接,使用完毕后将连接对象归还给连接池即可。

优点:资源重用;节省创建和销毁连接所花费的时间,提升系统响应速度;避免数据库连接遗漏。

二、数据库连接池的实现(Druid)

1.导入Druid的jar包

下载jar包:

链接:https://pan.baidu.com/s/1fRELYGU0zb1H87r7Xw9sig?pwd=kapt 
提取码:kapt

将jar包导入项目的lib文件夹下并添加为库文件

2.定义配置文件

将druid.properties文件粘贴到src目录下,并根据自己的实际情况修改配置文件

driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/test?useSSL=false
username=root
password=123456
#初始化连接数量
initialSize=5
#最大连接数
maxActive=10
#最大等待时间
maxWait=3000

3.Java代码实现

import com.alibaba.druid.pool.DruidDataSourceFactory;

import javax.sql.DataSource;
import java.io.FileInputStream;
import java.sql.Connection;
import java.util.Properties;

/*
    Druid的使用
 */
public class Test5 {
    public static void main(String[] args) throws Exception{
        //加载配置文件
        Properties prop=new Properties();
        prop.load(new FileInputStream("src/druid.properties"));
        //获取连接池对象
        DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);
        //获取数据库连接
        Connection connection = dataSource.getConnection();
        System.out.println(connection);
    }
}

运行结果如下

 三、数据库连接池的使用案例

1.创建使用的学生表students

 2.创建学生类Student

import java.sql.Date;

public class Student {
    private int sid;
    private String sname;
    private String smajor;
    private int sclass;
    private String sgender;
    private Date sbirthday;
    private String school;

    public int getSid() {
        return sid;
    }

    public void setSid(int sid) {
        this.sid = sid;
    }

    public String getSname() {
        return sname;
    }

    public void setSname(String sname) {
        this.sname = sname;
    }

    public String getSmajor() {
        return smajor;
    }

    public void setSmajor(String smajor) {
        this.smajor = smajor;
    }

    public int getSclass() {
        return sclass;
    }

    public void setSclass(int sclass) {
        this.sclass = sclass;
    }

    public String getSgender() {
        return sgender;
    }

    public void setSgender(String sgender) {
        this.sgender = sgender;
    }

    public Date getSbirthday() {
        return sbirthday;
    }

    public void setSbirthday(Date sbirthday) {
        this.sbirthday = sbirthday;
    }

    public String getSchool() {
        return school;
    }

    public void setSchool(String school) {
        this.school = school;
    }

    @Override
    public String toString() {
        return "Student{" +
                "sid=" + sid +
                ", sname='" + sname + '\'' +
                ", smajor='" + smajor + '\'' +
                ", sclass=" + sclass +
                ", sgender='" + sgender + '\'' +
                ", sbirthday=" + sbirthday +
                ", school='" + school + '\'' +
                '}';
    }
}

 3.实现数据库的增删改查

3.1 查询所有

import com.alibaba.druid.pool.DruidDataSourceFactory;

import javax.sql.DataSource;
import java.io.FileInputStream;
import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;

public class SelectALL {
    public static void main(String[] args) throws Exception {
        //1.获取Connection对象
        //加载配置文件
        Properties prop = new Properties();
        prop.load(new FileInputStream("src/druid.properties"));
        //获取连接池对象
        DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);
        //获取数据库连接
        Connection connection = dataSource.getConnection();
        //2.定义sql
        String sql = "select * from students where school = ?;";
        //3.获取PreparedStatement对象
        PreparedStatement pstmt = connection.prepareStatement(sql);
        //4.设置参数
        String sschool = "材料学院";
        pstmt.setString(1, sschool);
        //5.执行sql
        ResultSet resultSet = pstmt.executeQuery();
        //6.处理结果
        List<Student> list = new ArrayList<Student>();
        while (resultSet.next()) {
            Student student = new Student();
            //获取数据
            int sid = resultSet.getInt("sid");
            String sname = resultSet.getString("sname");
            String smajor = resultSet.getString("smajor");
            int sclass = resultSet.getInt("sclass");
            String sgender = resultSet.getString("sgender");
            Date sbirthday = resultSet.getDate("sbirthday");
            String school = resultSet.getString("school");
            //给student赋值
            student.setSid(sid);
            student.setSname(sname);
            student.setSmajor(smajor);
            student.setSclass(sclass);
            student.setSgender(sgender);
            student.setSbirthday(sbirthday);
            student.setSchool(school);
            //存入集合
            list.add(student);
        }
        System.out.println(list);
        //7.释放资源
        resultSet.close();
        pstmt.close();
        connection.close();
    }
}

查询结果如下

 3.2 修改数据

import com.alibaba.druid.pool.DruidDataSourceFactory;

import javax.sql.DataSource;
import java.io.FileInputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.util.Properties;

public class Update {
    public static void main(String[] args) throws Exception{
        //修改的内容
        String gender="女";
        //1.获取Connection对象
        //加载配置文件
        Properties prop = new Properties();
        prop.load(new FileInputStream("src/druid.properties"));
        //获取连接池对象
        DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);
        //获取数据库连接
        Connection connection = dataSource.getConnection();
        //2.定义sql
        String sql="update students set sgender = ? where sid = ?";
        //3.获取PreparedStatement对象
        PreparedStatement preparedStatement = connection.prepareStatement(sql);
        //4.设置参数
        preparedStatement.setString(1,gender);
        preparedStatement.setInt(2,102299201);
        //5.执行sql
        int i = preparedStatement.executeUpdate();
        //6.返回处理结果
        System.out.println(i);
        //7.释放资源
        preparedStatement.close();
        connection.close();
    }
}

执行结果:

修改后的students表如下,可以看到灰原哀的性别已被修改为女

 3.3 删除数据

import com.alibaba.druid.pool.DruidDataSourceFactory;

import javax.sql.DataSource;
import java.io.FileInputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.util.Properties;

public class Delete {
    public static void main(String[] args) throws Exception{
        //删除参数
        int id = 102299205;
        //1.获取Connection对象
        //加载配置文件
        Properties prop = new Properties();
        prop.load(new FileInputStream("src/druid.properties"));
        //获取连接池对象
        DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);
        //获取数据库连接
        Connection connection = dataSource.getConnection();
        //2.定义sql
        String sql="delete from scores where sid = ?";
        //3.获取PreparedStatement对象
        PreparedStatement preparedStatement = connection.prepareStatement(sql);
        //4.设置参数
        preparedStatement.setInt(1,id);
        //5.执行sql
        int i = preparedStatement.executeUpdate();
        //6.处理结果
        System.out.println(i);
        //7.释放资源
        preparedStatement.close();
        connection.close();
    }
}

执行结果如下图

执行前的scores表如图 

执行后的scores表如图,可以看到学号为205的学生信息已被删除

 

3.4 添加数据

import com.alibaba.druid.pool.DruidDataSourceFactory;

import javax.sql.DataSource;
import java.io.FileInputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.util.Properties;

public class Add {
    public static void main(String[] args) throws Exception{
        //待添加参数
        int id=102299201;
        int id2=102;
        int sscore=100;
        //1.获取Connection对象
        //加载配置文件
        Properties prop = new Properties();
        prop.load(new FileInputStream("src/druid.properties"));
        //获取连接池对象
        DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);
        //获取数据库连接
        Connection connection = dataSource.getConnection();
        //2.定义sql
        String sql="insert into scores(sid,cid,score) values(?,?,?)";
        //3.获取PreparedStatement对象
        PreparedStatement preparedStatement = connection.prepareStatement(sql);
        //4.设置参数
        preparedStatement.setInt(1,id);
        preparedStatement.setInt(2,id2);
        preparedStatement.setInt(3,sscore);
        //5.执行sql
        int i = preparedStatement.executeUpdate();
        //6.处理结果
        System.out.println(i);
        //7.释放资源
        preparedStatement.close();
        connection.close();
    }
}

 执行结果如图

 执行后的scores表如图,sid为201,cid为102的成绩已被成功加入 

 

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值