SQL注入+PreparedStatement使用


	跟字符串拼接有关
	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"));



上一篇:软件测试--测试设计方法及案例


下一篇:新手用c语言实现简易ATM系统