失败后如何恢复jdbc连接?

时间:2014-01-18 04:39:52

标签: java jdbc

我正在开发一个使用事务的程序,用于数据完整性。

我已经阅读了有关jdbc保存点的内容,其中可以回滚到事务中没有错误的位置。

但是有一种情况,比如网络失败,这使得处理事务的连接无效。

现在我已经设法在我的程序中检测到网络问题时,make会出现一个对话框,在尝试建立与db的连接时将阻止ui 2分钟。

我的问题是,有没有办法保存交易,而不是保存点,或重新建立在交易过程中发生网络故障的连接,这样如果重新建立连接,我们可以继续使用流行的查询?

为什么我想要这是因为我的程序将在提交之前执行多个模态对话框上的事务,比如对话A查询是成功的,当我们在提交之前转到对话框B时,如果发生网络错误,我们应该能够继续我们在对话框A中离开了。

提前致谢。

2 个答案:

答案 0 :(得分:1)

在“用户思考时”暂停数据库事务是个坏消息。更合适的策略是使用“版本控制”。

这是通过在记录中添加一个列来完成的,该列随每次更新而增加。当用户查看记录以考虑更改时,将加载版本。应用更改后,将比较版本以确保其未更改。如果它已经改变,你会遇到“软死锁”,可以通过以下几种方式解决:

  1. 警告用户已进行了其他更改,并要求确认覆盖
  2. 向用户显示在他们的思考时间内发生的更新列表,以及是否要覆盖它们。这可能很棘手,因为您应该刷新确认的版本号,如果他们选择覆盖则重新检查它,并在他们决定覆盖时更改某些内容时再给他们一个警告/确认。如有必要,您的流程应该设计为永久执行此操作。
  3. 完全阻止更新

答案 1 :(得分:1)

如果您主要关心的是数据完整性,并且ODBC后端数据库符合ACID标准,那么您无需担心。只需在重新建立连接后重新进行交易,这样就可以了。