当前位置:   article > 正文

JDBC连接mysql数据库_mysql combopooleddatasource 依赖

mysql combopooleddatasource 依赖

  1. 环境
  1. JDK1.8
  2. 第三方依赖:mysql-connector-java-8.0.15.jar
  3. MySQL数据库的版本与第三方依赖的版本没有关系当MySQL的版本是5,第三方依赖的版本可以用8
  1. 将依赖放到lib文件中,右键add as libiary
  2. 通过反射机制加载MySQL类驱动器:Class.forName("com.mysql.cj.jdbc.Driver")
  3. 创建Java与MySQL的连接通道:DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/数据库名?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC","用户名","密码");
  4. 创建sql语句:
  5. 创建传输数据的载体conn.createStatement();
  6. 将sql语句放到传输通道传输statement.executeQuery(sql);
  1. DML(insert,update,delete),DDL(create,drop,alter)时使用executeUpdate;返回值是1或者0
  2. DQL(select)时使用executeQuery返回值是resultSet数据集合
  1. 对于select之后的数据存储问题
  1. resultSet.next()一条条获取数据
  2. resultSet.nextString()获取一条数据中的字段
  3. 将字段set到对象中,之后可以在任意的位置调用该对象
  1. 结果集resultset中的setInt(“字段”)字段是数据库中的字段
public class ShuDemo {
    public static void main(String[] args) {
        try {
            //1.mysql驱动
            Class.forName("com.mysql.cj.jdbc.Driver");
            //2.创建连接通道
            Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/root?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC","root","root");
            //3.创建sql语句
            String sql="select * from student";
            //4.创建传输数据的载体
            Statement statement = conn.createStatement();
            //6.将数据sql语句传递
            ResultSet resultSet = statement.executeQuery(sql);
            //7.创建集合
            List<Student> list = new ArrayList<>();
            //实例化对象
            Student student = new Student();
            while (resultSet.next()){
            //结果集.getString("数据库字段")
                int id = resultSet.getString("id");
                String name = resultSet.getString("name");
                student.setId(id);
                student.setName(name);
                list.add(student);
            }
            Student student1 = list.get(2);

            System.out.println("数据 = " + student1);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35

存储数据的对象

public class Student {
    private int id;
    private String name;
    private boolean gender;
    private String sex;
    private Date date;

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

  
    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", gender=" + gender +
                ", sex='" + sex + '\'' +
                ", date=" + date +
                '}';
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  1. 常用数据类型转换表
    请添加图片描述

preparestatement

  1. statement和preparestatement的区别:
    1)preparestatement相较于statement预编译执行sql语句,减少了sql执行的次数,效率提交
  1. 要是插入一万条数据时,statement会开一万次事务,但是使用preparestatement只开启一次事务,只是更换了数据

        2)preparestatement相较于statement数据更加安全,防止sql注入,使用的是占位符

  1. 在使用statement时,sql语句做的是字符串拼接
  2. 当输入的密码是a' or '1'='1,用户名随便输入时,也会登录成功
  3. 这种sql语句拼接叫做sql注入
--当随机输入用户名,密码输入123456'OR'1'='1时,如下的sql语句相当于select * from user
            String sql="select * from person where user='随机' and password='123456'OR'1'='1'";
            ResultSet resultSet = state.executeQuery(sql
  • 1
  • 2
本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号