在Java中,删除操作是正确的,但也会执行catch

在Java中,删除操作是正确的,但也会执行catch,java,swing,jdbc,jcombobox,Java,Swing,Jdbc,Jcombobox,我的想法是,我必须在第一个组合框中选择一个项目。它将根据选择向第二个组合框添加一些项目。一旦选择了第二个组合框,就会检索一些访问表数据 最后,当我单击Delete时,必须根据two组合框中的项目删除记录 我正确地删除了记录。但是,我的问题是,我每次用一个 没有生成结果集 命令提示符中出现错误,但删除操作正确。我想知道里面发生了什么。请帮我诊断一下 try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection conn=D

我的想法是,我必须在第一个组合框中选择一个项目。它将根据选择向第二个组合框添加一些项目。一旦选择了第二个组合框,就会检索一些访问表数据

最后,当我单击Delete时,必须根据two组合框中的项目删除记录

我正确地删除了记录。但是,我的问题是,我每次用一个

没有生成结果集

命令提示符中出现错误,但删除操作正确。我想知道里面发生了什么。请帮我诊断一下

try
{

  Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
  Connection conn=DriverManager.getConnection("jdbc:odbc:vasantham","","");
  Statement st=conn.createStatement();
  ResultSet rs=st.executeQuery("delete from try where tname='"+scb+"' and   Purpose='"+scp+"'");

  JOptionPane.showMessageDialog(null,"Your entry has been DELETED successfully!!!");

}
catch(Exception e)
{
  JOptionPane.showMessageDialog(null,"Error!Try again!");
  System.out.println(e);

}
您使用的是必须与选择一起使用的,因为只有选择才能创建结果集。您使用的是更新查询,它不会生成结果集,因此会出现错误

在您的情况下,您需要使用

结果将包含删除的更新行数。

您正在使用的行数必须与selects一起使用,因为只有selects才能创建结果集。您使用的是更新查询,它不会生成结果集,因此会出现错误

在您的情况下,您需要使用



结果将包含已删除的更新行数。

能否尝试将代码量限制在显示问题的尽可能小的程序中?@oers:您应该这样回答。在初始代码示例和SQL注入中,清空catch块,我真的会解决这些问题。OP,如果您的异常处理编写正确,您的代码可能甚至不会达到这样的程度。您正在吞咽除此之外的所有异常,这里您没有保存stacktrace,这是关键信息。System.out.printlne只提供了异常名称和消息。@MarkoTopolnik谢谢您提供的信息。从现在开始,我将添加e.stacktrace。你能试着将代码量限制在显示问题的尽可能小的程序中吗?@oers:你应该这样回答。在初始代码示例和SQL注入中清空catch块,我真的也会修复这些。OP,如果你的异常处理写得正确,你的代码可能甚至达不到这个目的。您正在吞咽除此之外的所有异常,这里您没有保存stacktrace,这是关键信息。System.out.printlne只提供了异常名称和消息。@MarkoTopolnik谢谢您提供的信息。从现在开始,我将添加e.stacktrace。非常感谢。成功了!那么,你的意思是,除了Select之外,每个查询都必须使用executeUpdate执行吗?让我这样说:如果语句返回一个结果集,你必须使用execute query是的,这可能只是Select。如果无法返回结果集,则必须使用executeUpdateINSERT、DELETE、UPDATE。谢谢。那么在哪里使用PreparedStatement呢?我读了很多教程,但还是没有抓住要点。它的用途是什么?对不起,我是初学者!同样的:对不起,我还是没能理解重点!它与使用executeupdate相同吗?如果两者都是一样的,那么我们为什么需要它呢?非常感谢。成功了!那么,你的意思是,除了Select之外,每个查询都必须使用executeUpdate执行吗?让我这样说:如果语句返回一个结果集,你必须使用execute query是的,这可能只是Select。如果无法返回结果集,则必须使用executeUpdateINSERT、DELETE、UPDATE。谢谢。那么在哪里使用PreparedStatement呢?我读了很多教程,但还是没有抓住要点。它的用途是什么?对不起,我是初学者!同样的:对不起,我还是没能理解重点!它与使用executeupdate相同吗?如果两者都是一样的,那么我们为什么需要它呢?
int result = st.executeUpdate(...)