函数调用问题

时间:2011-01-07 07:18:36

标签: java synchronization

我打算调用一个函数,它将从数据库中检索一些数据值。但在此之前我发送这些数据。我只是通过这个函数调用检查这些数据是否正确插入。但插入数据需要一些时间插入数据库,但我的函数调用在实际将数据插入数据库之前就开始了。因此,发现数据库中没有插入数据。任何人都可以告诉我如何解决这个问题。如何同步这个。在正确插入数据库后我是否应该得到正确的结果。我不能在这里使用runnable接口或线程类。认为我必须做的是在一定时间后调用数据访问函数,以便数据有足够的时间插入数据库。请帮帮我。

2 个答案:

答案 0 :(得分:1)

不知道您使用的是哪种语言,但是该函数可能有一个参数会导致它等到查询完成后再返回?有人提到“同步?”这个词。

答案 1 :(得分:0)

使用数据库驱动程序

我不熟悉JDBC,因此我不确定您可以使用哪些工具,但看起来您的工作量超出了您的需求。

通常,数据库驱动程序会通知您查询是否已成功执行,因此您不需要让应用程序在之后查询数据以验证数据是否存在。而是ask the driver for errors来查看查询是否存在问题。

如果您要插入大量数据并且数据库支持它,您可能需要use a transaction来执行插入操作。这会将所有数据传递到数据库中,尝试插入,并警告您任何问题。

如果事务有问题,您可以回滚,数据库状态与启动时相同(显然您需要处理错误以保存数据)。如果没有问题,您可以完成提交事务,并确保数据库状态与应用程序状态匹配。

替代

如果出于某种原因上述方法不起作用,您可以尝试使用事件模式解决竞争条件。简单来说,您希望在插入数据时{​​{3}}提醒验证者它可以开始读取数据。验证器将监听该事件并在听到它时触发。