Appearance
PreparedStatement 是 Statement 接口的子接口,继承于父接口中所有的方法。它是一个预编译的 SQL 语句,原理如下图:
PreparedStatement:执行sql的对象1. SQL注入问题:在拼接sql时,有一些sql的特殊关键字参与字符串的拼接。会造成安全性问题 1. 输入用户随便,输入密码:
- a' or 'a' = 'a
- sql
:
select * from user where username = 'fhdsjkf' and password = 'a' or 'a' = 'a' 2. 解决sql注入问题:使用PreparedStatement对象来解决 3. 预编译的SQL:参数使用?作为占位符 4. 步骤: 1. 导入驱动jar包
- mysql-connector-java-5.1.37-bin.jar
注册驱动 3. 获取数据库连接对象
- Connection
定义
- sql
注意:sql的参数使用?作为占位符。 如:
select * from user where username = ? and password = ?; 5. 获取执行sql语句的对象 PreparedStatement Connection.prepareStatement(String sql)
6. 给?赋值:
* 方法: setXxx(参数1,参数
参数1:?的位置编号 从1 开始 * 参数2:?的值 7. 执行sql,接受返回结果,不需要传递sql语句
8. 处理结果 9. 释放资源 示例代码:
5. 注意:后期都会使用PreparedStatement来完成增删改查的所有操作 1. 可以防止SQL注入 2. 效率更高
