我应该如何确定数据是否已存在于数据库中

我的代码出现一些错误,当我编写数据库中不存在的卷号并按下删除按钮时,还会弹出一条消息,提示“记录已成功删除”。


实际上我想创建一个学生报告项目并通过连接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("");


哈士奇WWW
浏览 122回答 4
4回答

鸿蒙传说

首先,使用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!!!");

跃然一笑

showMessageDialog仅当变量值为正时才应执行,d即某些记录已从数据库中删除。例如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("");

MYYA

输入 rn:1 or 1=1并享受。使用PreparedStatements 将防止这种邪恶的SQL 注入。它还处理 SQL 字符串周围的撇号以及转义撇号和其他字符。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始终关闭

慕婉清6462132

检查executeUpdate 的结果是否> 0。如果是,则您的条目已被删除。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java