PreparedStatement解决sql注入

在之前提到过Statement的三个问题

用PreparedStatement解决sql注入

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.PreparedStatement;
import java.util.Scanner;


public class TestPreParedStatement2 {
	public static void main(String  []  args) throws Exception{
		//1、键盘输入
		Scanner input = new Scanner(System.in);
		System.out.println("请输入名字");
		String ename  = input.nextLine();
		
		//2、注册驱动
		Class.forName("com.mysql.jdbc.Driver");
		
		//3、获取驱动
		Connection  conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/1205db","root","123456");
		
		//4、编写sql语句
		String sql = "select * from t_employee where ename = ?";
		
		//5、创建PreparedStatement 
		PreparedStatement pst =  conn.prepareStatement(sql); 
		
		//6、把?设置成具体值
		pst.setObject(1, ename);
		
		//7、执行更新sql
		ResultSet rs =  pst.executeQuery();
		//这里不能传入sql
		while(rs.next()){
			for(int i=1;i<=10;i++){
				System.out.print(rs.getObject(i)+"\t");
			}
			System.out.println();
		}
		
		//8、关闭连接
		rs.close();
		pst.close();
		conn.close();
		input.close();
	}
}

在这里插入图片描述

换为sql注入:

在这里插入图片描述

没有任何回应,再换一个:

在这里插入图片描述

还是没有任何的反应。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章