PreparedStatement解决sql注入问题
2016-07-08 11:17
309 查看
总结 PreparedStatement解决sql注入问题
:sql中使用?做占位符
2.得到PreparedStatement对象
PreparedStatement pst=conn.prepareStatement(String sql);
pst.setString(1,"aaa");//设置 第一个?的占位符赋值
pst.setString(2,"bbb");
[align=left]// 查找用户 使用PreparedStatement 解决了 sql注入问题[/align]
[align=left] public User findUser(User user) {[/align]
[align=left] String sql = "select * from user where username='?' and password='?'";[/align]
[align=left] Connection conn = null;[/align]
[align=left] PreparedStatement pst = null;[/align]
[align=left] ResultSet rs = null;[/align]
[align=left] try {[/align]
[align=left] conn = jdbcUtils. getConnection();[/align]
[align=left] pst = conn.prepareStatement(sql);[/align]
[align=left] pst.setString(1, user.getUsername());[/align]
[align=left] pst.setString(2, user.getPassword());[/align]
[align=left] rs = pst.executeQuery();[/align]
[align=left] if (rs.next()) {[/align]
[align=left] User u = new User();[/align]
[align=left] u.setId(rs.getInt( "id"));[/align]
[align=left] u.setUsername(rs.getString( "username"));[/align]
[align=left] u.setPassword(rs.getString( "password"));[/align]
[align=left] u.setEmail(rs.getString( "email"));[/align]
[align=left] return u;[/align]
[align=left] }[/align]
[align=left] } catch (Exception e) {[/align]
[align=left] // TODO Auto-generated catch block[/align]
[align=left] e.printStackTrace();[/align]
[align=left] }[/align]
[align=left] return null;[/align]
[align=left] }[/align]
:sql中使用?做占位符
2.得到PreparedStatement对象
PreparedStatement pst=conn.prepareStatement(String sql);
pst.setString(1,"aaa");//设置 第一个?的占位符赋值
pst.setString(2,"bbb");
[align=left]// 查找用户 使用PreparedStatement 解决了 sql注入问题[/align]
[align=left] public User findUser(User user) {[/align]
[align=left] String sql = "select * from user where username='?' and password='?'";[/align]
[align=left] Connection conn = null;[/align]
[align=left] PreparedStatement pst = null;[/align]
[align=left] ResultSet rs = null;[/align]
[align=left] try {[/align]
[align=left] conn = jdbcUtils. getConnection();[/align]
[align=left] pst = conn.prepareStatement(sql);[/align]
[align=left] pst.setString(1, user.getUsername());[/align]
[align=left] pst.setString(2, user.getPassword());[/align]
[align=left] rs = pst.executeQuery();[/align]
[align=left] if (rs.next()) {[/align]
[align=left] User u = new User();[/align]
[align=left] u.setId(rs.getInt( "id"));[/align]
[align=left] u.setUsername(rs.getString( "username"));[/align]
[align=left] u.setPassword(rs.getString( "password"));[/align]
[align=left] u.setEmail(rs.getString( "email"));[/align]
[align=left] return u;[/align]
[align=left] }[/align]
[align=left] } catch (Exception e) {[/align]
[align=left] // TODO Auto-generated catch block[/align]
[align=left] e.printStackTrace();[/align]
[align=left] }[/align]
[align=left] return null;[/align]
[align=left] }[/align]
相关文章推荐
- 向mysql数据库中插入大二进制文件和大文本
- Statement及PreparedStatement执行多个sql
- mysql双机热备实现(mysql版本:5.1.7)
- Xtrabackup构建MySQL主从环境
- django的数据库模型中的域多次引用同一个外键(表)
- mybatis学习笔记(八)Sqlsession详解
- oracle查询某字段的重复数据
- Mysql字符集设置 2 图
- Activiti流程 关于自定义sql查询
- 报错:1130-host ... is not allowed to connect to this MySql server 开放mysql远程连接 不使用localhost
- Codeigniter数据库操作
- sql注入
- Mysql字符集设置
- mysql sql语句大全
- 利用 Sqoop 对关系型数据库 与 非关系型数据库,分布式等数据库之间进行数据迁移
- redis在windows下安装和ThinkPHP中使用
- oracle里实例和数据库之间的关系
- 大量 Redis 服务器存在 SSH 权限窃取风险
- 通过数据库评估存储设备IO性能-Oracle 11g IO校准功能介绍
- sqlmap自动的寻找注入点,