String sql = "select * from administrator where adminname=?";
psm = con.prepareStatement(sql);
String s_name ="zhangsan' or '1'='1";
psm.setString(1, s_name);
假設數據庫表中並沒有zhangsan這個用戶名,
用plsql運行sql語句,可以查出來所有的用戶名,但是在Java中並沒有查出任何數據,這是為什麽呢?
首先,setString()的源碼中只有方法名字,並沒有任何過程性處理,
那麽答案肯定出現在Java到數據庫這個過程中,也就是mysql和oracle驅動包中,在mysql驅動包中,PreparedStatement繼承並實現了jdk中的setString方法,
也就是原因在於數據庫廠商幫妳解決了這個問題