跟字符串拼接有关
1.SQL注入
所谓的SQL注入
意思就是通过SQL命令 拼接其他的字符串
让其他的那些字符串来改变原有SQL语句的执行
最终达到欺骗服务器的效果
里面拼接的其他字符 肯定是SQL语法认可的合法的字
select * from atm
where aname = 'xxx' and apassword = 'xxx' or '1' = '1'
2.问题产生的原因
1.判断不严谨导致的
2.SQL语句问题 允许拼接字符串 认为用户很不安全
3.可以利用PreparedStatement来处理SQL
Statement PreparedStatment
普通的状态 参数 预处理状态参数
创建时不需要SQL 创建时就需要预先加载SQL语句
此时没有执行 此时没有执行 但 底层预先处理SQL需要查询的结果 性能高
可以利用动态化进行参数的处理 利用?代替 数据类型及值
好处 1.增强SQL可读性 2.可以参数动态化 3.防止SQL注入 4.提高执行性能
3.模糊查询---->
like "%%"
//预处理小案例
Class.forName(className);
Connection conn = DriverManager.getConnection(url,user,password);
PreparedStatement pstat = conn.prepareStatement(sql);//预处理状态参数
//给sql语句中的问号赋值
pstat.setString(1,aname);
ResultSet rs = pstat.executeQuery();
//将结果集内的信息取出来 存入一个对象
if(rs.next()){
atm = new Atm();
atm.setAname(rs.getString("aname"));
atm.setApassword(rs.getString("apassword"));
atm.setAbalance(rs.getFloat("abalance"));