从Java wamp服务器中的数据库中删除

从Java wamp服务器中的数据库中删除,java,mysql,database,wamp,Java,Mysql,Database,Wamp,我有一个deleteBook()方法,可以删除数据库中的项目。它工作正常,意味着删除输入了相应ISBN的指定项目。问题是,如果用户输入的ISBN不在我的数据库中,try语句仍会执行。我认为必须执行catch语句,因为在数据库中找不到输入的ISBN。try仍将运行。它只删除0行 您需要使用的返回值。因为executeUpdate()返回一个int;更新或删除的实体数您可以使用它来解决您的问题。您只需抛出一个异常即可获取错误消息 public void deleteBook(int temp) {

我有一个
deleteBook()
方法,可以删除数据库中的项目。它工作正常,意味着删除输入了相应ISBN的指定项目。问题是,如果用户输入的ISBN不在我的数据库中,
try
语句仍会执行。我认为必须执行
catch
语句,因为在数据库中找不到输入的ISBN。

try仍将运行。它只删除0行

您需要使用的返回值。因为executeUpdate()返回一个int;更新或删除的实体数您可以使用它来解决您的问题。您只需抛出一个异常即可获取错误消息

public void deleteBook(int temp)
{
    try
    {
        query = "DELETE FROM ccItems WHERE ISBN = '"+temp+"'";

        stmt.executeUpdate(query);

        JOptionPane.showMessageDialog(null, "Item Deleted !");
    }      

    catch(Exception e)
    {
        JOptionPane.showMessageDialog(null, "Error: Could not find ISBN or Already deleted.");
    }
}

与select查询一样,“未找到记录”也不例外。
stmt.executeUpdate(查询)
将返回已删除的记录数。

从数据库的角度来看,这根本不是错误,它只是在where条件下找不到任何匹配的记录。
这就是为什么您不会在客户端上引发异常。

如果我输入一些东西使temp等于“或”=',您的所有CCItem都将被删除,这是一种SQL注入攻击。

它不会给出任何错误,因为如果ISBN不存在,它只会影响零行而不会产生任何错误

如果您想确切地知道是否删除了任何一行,请这样编写代码

public void deleteBook(int temp)
{
    try
    {
        query = "DELETE FROM ccItems WHERE ISBN = '"+temp+"'";
        if (stmt.executeUpdate(query)!=0) {
          JOptionPane.showMessageDialog(null, "Item Deleted !");
        } else {
          throw new Exception();
        }
    }      
    catch(Exception e)
    {
        JOptionPane.showMessageDialog(null, "Error: Could not find ISBN or Already deleted.");
    }
}

马克回答说:“这就是你在StackOverflow上感谢人们的方式。我可以发表评论,所以你介意在这里帮助我吗?”。
public void deleteBook(int temp){
   try{
        query = "DELETE FROM ccItems WHERE ISBN = '"+temp+"'";
        int numberOfRowsEffected = stmt.executeUpdate(query);
        if (numberOfRowsEffected == 0){
            JOptionPane.showMessageDialog(null, "Item not found !");
        }else{
            JOptionPane.showMessageDialog(null, "Item Deleted !");
        }
    } catch(Exception e){
        JOptionPane.showMessageDialog(null, "Error: Could not find ISBN or Already deleted.");
    }
}