[英]How should i make sure if the data already exists in the database
我的代碼有一些錯誤,當我寫一個數據庫中不存在的卷號並按下刪除按鈕時,還會彈出一條消息說“記錄已成功刪除” 。
實際上,我想創建一個學生報告項目,並通過連接 java 和 MySQL。 所以我為刪除按鈕編寫了代碼,如果寫了一個學生的卷號並按下刪除,它將刪除該特定學生的記錄。
所以希望你理解我的問題並期待一個准確的答案。
Class.forName("java.sql.DriverManager");
Connection con=DriverManager.getConnection("jdbc:mysql://localhost/stud","root","");
Statement stmt=con.createStatement();
String query="delete from info where rollno="+rn.getText();
int d = stmt.executeUpdate(query);
JOptionPane.showMessageDialog(null,"record deleted successfully!!!");
rn.setText("");
首先,使用PreparedStatement
填寫參數而不是編寫 SQL 字符串。
可以避免非常討厭的錯誤( “Bobby Tables”XKCD 漫畫中的 SQL 注入如何工作? )。 所以
PreparedStatement stmt = con.prepareStatement("DELETE FROM info WHERE rollno=?");
stmt.setLong(1, Long.parseLong(rn.getText()));
int d = stmt.executeUpdate();
就您的問題而言:
方法executeUpdate
返回受影響的行數。
如果它等於 0,則不刪除任何行。
if (d == 0)
{
JOptionPane.showMessageDialog(null,"This record does not exist");
// Return or thrown an exception or whatever to interrupt the operation
}
else
JOptionPane.showMessageDialog(null,"record deleted successfully!!!");
只有當d
變量的值為正數時才應執行showMessageDialog
,即從數據庫中刪除了一些記錄。 例如
Class.forName("java.sql.DriverManager");
Connection con=DriverManager.getConnection("jdbc:mysql://localhost/stud","root","");
Statement stmt=con.createStatement();
String query="delete from info where rollno="+rn.getText();
int d = stmt.executeUpdate(query);
if(d>0){
JOptionPane.showMessageDialog(null,"record deleted successfully!!!");
}
rn.setText("");
檢查 executeUpdate 的結果是否 > 0。如果是,則您的條目已被刪除。
輸入 rn: 1 or 1=1
並享受。 使用 PreparedStatements 將防止這種邪惡的 SQL 注入。 它還處理 SQL 字符串和 escaping 撇號和其他字符周圍的撇號。
Connection con=DriverManager.getConnection("jdbc:mysql://localhost/stud","root","");
String query="delete from info where rollno=?";
try (PreparedStatement stmt = con.prepareStatement(query)) {
stmt.setLong(1, Integer.parseLong(rn.getText()));
int d = stmt.executeUpdate();
if (d != 0) {
JOptionPane.showMessageDialog(null, "Record deleted successfully.",
JOptionPane.INFORMATION_MESSAGE);
}
}
這個try-with-resources將確保stmt
始終關閉
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.