2012-02-03 62 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(客戶端)程序定期輪詢以查明您需要的信息是否存在。半小時的延遲不會影響任何事情,即使有中等數量的進程輪詢單獨的值(甚至是相同的值)。另一方面,你通常儘量避免輪詢。您需要在到達特殊數據的響應性和一般系統響應性之間取得平衡。總的來說,一般系統的響應速度更重要,所以保持輪詢間隔儘可能大。

如果您的投票間隔需要亞秒,那麼餘額將會不同 - 工作會更加困難。

相關問題