使用java的hsql数据库连接

时间:2011-02-22 10:43:50

标签: java hsqldb

我有一个场景,我的Java程序必须不断地与数据库表通信,例如我的Java程序必须在运行时向其添加新行时获取我的表的数据。我的程序和数据库之间应该有持续的通信。

如果表最初有10行,并且用户添加了2行,则必须检测到这一行并返回行。

4 个答案:

答案 0 :(得分:3)

使用HSQLDB,无需连续轮询即可支持此功能。

HSQLDB TRIGGER支持触发事件发送的同步或异步通知。目标可以是用户的应用程序或任何其他应用程序。

请参阅http://hsqldb.org/doc/2.0/guide/triggers-chapt.html

答案 1 :(得分:1)

对于HSQL,您可以使用触发器。参考:http://hsqldb.org/doc/2.0/guide/triggers-chapt.html

Java中的触发操作

触发器操作可以编写为实现org.hsqldb.Trigger接口的Java类。此接口具有单个方法,在触发器被激活时,在事件之前或之后调用该方法。当引擎调用该方法时,它将触发器类型提供为接口定义的int值(作为类型参数),触发器的名称(作为trigName参数),表的名称(作为tabName参数) ,OLD ROW(作为oldRow参数)和NEW ROW(作为newRow参数)。对于行级INSERT触发器,oldRow参数为null。对于行级DELETE触发器,newRow参数为null。对于表级触发器,两个参数都为null(即,无法访问数据)。 triggerType参数是org.hsqldb.Trigger接口中的常量之一,用于指示触发器的类型,例如INSERT_BEFORE_ROW或UPDATE_AFTER_ROW。

  CREATE TRIGGER t BEFORE UPDATE ON customer
   REFERENCING NEW AS newrow FOR EACH ROW
   BEGIN ATOMIC
     IF LENGTH(newrow.firstname) > 10 THEN
       CALL my_java_function(newrow.firstname, newrow.lastname);
     END IF;
   END

答案 2 :(得分:0)

持续沟通是什么意思?建立数据库的连接应保持打开状态,直到您完成此任务。但是你必须继续轮询以获取新记录。

答案 3 :(得分:0)

这是不可能的。您必须定期轮询数据库以检测更改。