【发布时间】:2016-05-06 18:24:27
【问题描述】:
我从 SQL 开始,并尝试将它与 Java 应用程序混合使用。我的表 ZAMESTNANEC 包含 6 行。
当我在 SQL 中发出命令 delete from ZAMESTNANEC where ID = 7; 时,它会立即删除。几毫秒。但是当我在我的 Java 应用程序中使用它时,该应用程序将在处理过程中冻结。我等了 4 分钟,什么也没发生(由于它的工作状态,我不能做任何其他事情)。哦,该行没有被删除。
我阅读了有关删除的主题,但对我没有多大帮助。事实上,它根本没有帮助我。 oracle delete query taking too much time
我试图调试它,但它在这个命令上被冻结了。我不明白为什么在 SQL 中它可以正常工作,而在 Java 应用程序中却不行。 SELECT 等其他命令也可以正常工作。
这里是 JDBC - http://pastebin.com/BRh06yc8 此处按钮的代码
private void jButtonOdeberZamActionPerformed(java.awt.event.ActionEvent evt) {
try{
OracleConnector.setUpConnection("xxxxxxxx", 1521, "ee11",
"NAME", "PASSWORD");
conn = OracleConnector.getConnection();
stmt = conn.createStatement();
stmt.executeQuery("delete from ZAMESTNANEC where ID = 7");
} catch(SQLException ex){
System.out.println(ex);
}
【问题讨论】:
-
你的表是否有太多的外键引用?
-
你有什么监控工具可以查看数据库中的SQL语句吗?你也可以显示 JDBC 代码吗?
-
当您既不提供代码也不提供数据时,很难说是什么导致了这种行为。如果您想要有用的答案,请提交minimal reproducible example。
-
executeQuery应该用于预期返回结果的查询。试试executeUpdate看看是否有帮助。可能是您的应用正在等待接收永远不会回来的结果。 -
天哪,你是天才汤姆!有用!谢谢。