赞
踩
- JDK1.8
- 第三方依赖:mysql-connector-java-8.0.15.jar
- MySQL数据库的版本与第三方依赖的版本没有关系当MySQL的版本是5,第三方依赖的版本可以用8
add as libiary
Class.forName("com.mysql.cj.jdbc.Driver")
DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/数据库名?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC","用户名","密码");
conn.createStatement();
statement.executeQuery(sql);
DML(insert,update,delete),DDL(create,drop,alter)
时使用executeUpdate;
返回值是1或者0DQL(select)
时使用executeQuery
返回值是resultSet数据集合
- resultSet.next()一条条获取数据
- resultSet.nextString()获取一条数据中的字段
- 将字段set到对象中,之后可以在任意的位置调用该对象
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(); } } }
存储数据的对象
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 + '}'; } }
- 要是插入一万条数据时,statement会开一万次事务,但是使用preparestatement只开启一次事务,只是更换了数据
2)preparestatement
相较于statement
数据更加安全,防止sql注入,使用的是占位符?
- 在使用
statement
时,sql
语句做的是字符串拼接- 当输入的密码是
a' or '1'='1
,用户名随便输入时,也会登录成功- 这种
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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。