1.加载驱动
Class.forName("com.mysql.cj.jdbc.Driver");
2.连接数据库(MySQL的数据库的路径及其相关配置信息,root(用户名,MySQL数据库一般默认为root),MySQL数据库的密码)
String URL = "jdbc:mysql://localhost:3306/数据库的名称?serverTimezone=UTC"; String USER = "root"; String PASS = "password" Connection conn = DriverManager.getConnection(URL, USER, PASS);
3.创建状态通道(进行SQL语句的发送),并获得结果集(针对查询操作),查询操作返回的结果集使用ResultSet类进行接收。对于增删改操作返回的是int类型的数字,表示受影响的行数
//1.通过连接数据库创建的对象,创建Statement对象
Statement statement = conn.createStatement();
//2.通过Statement对象的方法执行SQL语句
//2.1 SQL查询的方法,获得结果集
ResultSet rs = statement.executeQuery("SQL查询语句");
//2.2 SQL增删改操作的方法
int i = statement.executeUpdate("SQL增删改语句");
4.遍历结果集/取出结果集(增删改操作省略此步骤)
while(rs.next()){//判断是否有下一条数据
//通过ResultSet类下的方法获得相应字段下的信息
//例如:rs.getXxx("字段名/字段的相对位置"),Xxx代表字段对应的数据类型
}
5.释放资源
//结果集对象.close(); //状态通道对象.close(); //数据库连接对象.close();状态通道
状态通道:使用数据库连接对象创建的Statement对象
Statement statement = conn.createStatement();
在执行SQL语句的方法中,可以实现SQL注入,即可以实现字符串与SQL语句的任意拼接。
预状态通道1.预状态通道:使用数据库连接对象创建的PreparedStatement对象
Prepared pps = conn.preparedStatement("SQL语句");
2.在预状态通道内的SQL语句中可以使用占位符:?,占位符的操作只能传入对应的一个参数
3.使用预状态通道对象的方法给占位符进行赋值
pps.setXxx(下标,内容)//Xxx为要传入数据的数据类型,下标从1开始
4.在预状态通道内执行SQL语句
ResultSet rs = pps.executeQuery();//此处为无参的查询方法状态通道和预状态通道的区别总结
(1)statement属于状态通道,PreparedStatement属于预状态通道
(2)预状态通道会先编译sql语句,再去执行,比statement执行效率高
(3)预状态通道支持占位符?,给占位符赋值的时候,位置从1开始
(4)预状态通道可以防止sql注入,原因:预状态通道在处理值的时候以字符串的方式处理



