爲防止sql注入,我試圖避免使用WHERE Surname LIKE '"search_txt.getText()"'
...但是使用preparedStatement
正在離開?空白,換句話說SQL語句無法執行,甚至一個正確的搜索值在文本框輸入的...什麼是行pst1.setString(1, search_txt.getText()+"%");
在java中用一個或多個字搜索整個數據庫
private void SearchActionPerformed(java.awt.event.ActionEvent evt) {
try{
sql = "SELECT Title, Forename, Surname, Role FROM AcademicInfo WHERE Surname LIKE ? OR Forename LIKE ?";
PreparedStatement pst1 = conn.prepareStatement(sql);
ResultSet rs2 = pst1.executeQuery();
if (rs2.next()) {
pst1.setString(1, search_txt.getText()+"%");
pst1.setString(2, search_txt.getText()+"%");
System.out.println(sql);
JOptionPane.showMessageDialog(null, "Found Academic");
Update_table(sql);
} else {
System.out.println(sql);
JOptionPane.showMessageDialog(null, "No Results Found");
}
}
catch(Exception e) {
JOptionPane.showMessageDialog(null, e);
}
}
歡迎** SQL注入攻擊**。使用準備好的語句而不是自己搞亂字符串! –
@ Anony-Mousse我知道這一點,這只是一個想法。 – Hoody
其他人可能會偶然發現這個問題,然後認爲這是正確的做法。最好避免在任何地方發佈的每個代碼片段中出現這種錯誤,這樣人們就不會看到錯誤的代碼,而不會解釋爲什麼它不好,以及如何做得更好。 –