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注入:

在這裏插入圖片描述

沒有任何迴應,再換一個:

在這裏插入圖片描述

還是沒有任何的反應。

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