我正在编写一个Java / Perl组合程序,该程序将XML文件解析为Oracle SQL数据库。数据库中有两个表-一个表保存XML文件中的数据,另一个表保存有关文件本身的信息(文件名,创建时间等)。基本上,当一个新的XML文件出现时,Java程序会检查它是否已经被解析或部分被解析。如果有,它将使用STATUS
将该文件ID的filestatus表中的UPDATE FILESTATUS SET STATUS='bad' WHERE ID=?
列从“好”更改为“坏”。但是,当我运行它时,这样做会卡住。任何想法为什么会发生这种情况?没有错误消息发生,只是挂起。代码如下。
static void markDataBad(String docID)
{
try
{
String update = "UPDATE FILESTATUS SET STATUS='bad' WHERE ID=?";
PreparedStatement updateStatus = Main.con.prepareStatement(update);
updateStatus.setString(1, docID);
updateStatus.execute();
}
catch (Exception ex) {ex.printStackTrace();}
}
我已经尝试将
updateStatus.execute()
更改为updateStatus.executeQuery()
和updateStatus.executeUpdate()
,但是似乎没有任何改变。提前致谢!
最佳答案
您是否在其他地方对该表进行了未提交的更改?我今天遇到了这个问题,因为我在SQL * Developer中对表做了一些更改,并且在我提交表之前一直保持对表的锁定。