其他分享
首页 > 其他分享> > JDBC(2)preparestatement

JDBC(2)preparestatement

作者:互联网

PreparedStatement

Statement 的⼦类,提供了 SQL 占位符的功能 使⽤ Statement 进⾏开发有两个问题: 1、需要频繁拼接 String 字符串,出错率较⾼。 2、存在 SQL 注⼊的⻛险。 SQL 注⼊:利⽤某些系统没有对⽤户输⼊的信息进⾏充分检测,在⽤户输⼊的数据中注⼊⾮法的 SQL语句,从⽽利⽤系统的 SQL 引擎完成恶意⾏为的做法
String pword="124 'or '1=1";
 String sql="Select *from user where name='"+username+" 'and password='"+pword+"'";

显示

Select *from user wherename='肖战 'and password='124 'or '1=1'   此时密码无论如何都可以进去

用法

1.sql语句不同
String sql = "select * from t_user where username = ? and password = ?";
2.在创建prepareStatement时就将sql语句传入 PreparedStatement preparedStatement = connection.prepareStatement(sql);
3.问号的赋值 preparedStatement.setString(1,username); preparedStatement.setString(2,mypassword); ResultSet resultSet = preparedStatement.executeQuery(); if(resultSet.next()){ System.out.println("登录成功"); }else{ System.out.println("登录失败"); }

 

         

标签:username,JDBC,String,preparestatement,SQL,preparedStatement,user,sql
来源: https://www.cnblogs.com/hanabi-521/p/14392071.html