JDBC的连接步骤
导入连接MySQL的jar包
代码实现
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类型的数字,表示受影响的行数
Statement statement = conn.createStatement();
ResultSet rs = statement.executeQuery("SQL查询语句");
int i = statement.executeUpdate("SQL增删改语句");
4.遍历结果集/取出结果集(增删改操作省略此步骤)
while(rs.next()){
}
5.释放资源
状态通道
状态通道:使用数据库连接对象创建的Statement对象
Statement statement = conn.createStatement();
在执行SQL语句的方法中,可以实现SQL注入,即可以实现字符串与SQL语句的任意拼接。
预状态通道
1.预状态通道:使用数据库连接对象创建的PreparedStatement对象
Prepared pps = conn.preparedStatement("SQL语句");
2.在预状态通道内的SQL语句中可以使用占位符:?,占位符的操作只能传入对应的一个参数 3.使用预状态通道对象的方法给占位符进行赋值
pps.setXxx(下标,内容)
4.在预状态通道内执行SQL语句
ResultSet rs = pps.executeQuery();
状态通道和预状态通道的区别总结
(1)statement属于状态通道,PreparedStatement属于预状态通道 (2)预状态通道会先编译sql语句,再去执行,比statement执行效率高 (3)预状态通道支持占位符?,给占位符赋值的时候,位置从1开始 (4)预状态通道可以防止sql注入,原因:预状态通道在处理值的时候以字符串的方式处理
|