2012-02-03 63 views
1

我正在使用Informix DB。这个问题可能不会绑定到一个特定的数据库。但我想知道如何在Java中进行操作,不断探究数据库并检查某个行是否已添加到数据库中的表中。基本上,流程是:如何检查具有特定值的特定行是否已插入数据库中

  1. 我的Java应用程序应该使用JDBC来检查某个表是否被填充。
  2. 如果不是,则应该等到一行被插入。

我的问题我该如何让Java知道行插入。我不希望添加任何触发器或任何东西,但在纯Java中能够检查该行是否已添加。

我脑海中浮现的一些想法是不断地为行调用DB,或者定期(每半小时左右)调用一次数据库并检查行是否可用。但是我正在寻找的东西就像是一个可以做到这一点的Listener。

+0

也许一个TimerTask会做这项工作 – xyz 2012-02-03 11:36:14

回答

1

当特定的行到达表中时,Informix DBMS中没有设备可以发出信号。

那么,我说,但有DB-Cron设施,它可以定期执行任务(在服务器内),并且您可以设想调度任务轮询数据以查看它是否已到达并发送消息(以某种方式)表明它已经。这将是不平凡的,特别是表明它已经到达的部分。

JDBC协议(和SQL协议通常)基本上是同步的;客户端发送一个请求并等待DBMS的答案。因此,如果您的延迟时间为半小时,您可以创建一个管理任务来处理处理(如果这对您至关重要,您可以编写一个由服务器在服务器上执行的Java UDR) ,或者您可以安排Java(客户端)程序定期轮询以查明您需要的信息是否存在。半小时的延迟不会影响任何事情,即使有中等数量的进程轮询单独的值(甚至是相同的值)。另一方面,你通常尽量避免轮询。您需要在到达特殊数据的响应性和一般系统响应性之间取得平衡。总的来说,一般系统的响应速度更重要,所以保持轮询间隔尽可能大。

如果您的投票间隔需要亚秒,那么余额将会不同 - 工作会更加困难。

相关问题