为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

哈士奇WWW 2023-09-13 17:33:37
我的代码出现一些错误,当我编写数据库中不存在的卷号并按下删除按钮时,还会弹出一条消息,提示“记录已成功删除”。实际上我想创建一个学生报告项目并通过连接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("");
查看完整描述

4 回答

?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

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


查看完整回答
反对 回复 2023-09-13
?
跃然一笑

TA贡献1826条经验 获得超6个赞

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("");


查看完整回答
反对 回复 2023-09-13
?
MYYA

TA贡献1868条经验 获得超4个赞

输入 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始终关闭


查看完整回答
反对 回复 2023-09-13
?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

检查executeUpdate 的结果是否> 0。如果是,则您的条目已被删除。



查看完整回答
反对 回复 2023-09-13
  • 4 回答
  • 0 关注
  • 118 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信