使用java的hsql数据库连接

Posted

技术标签:

【中文标题】使用java的hsql数据库连接【英文标题】:hsql database connection using java 【发布时间】:2011-02-22 10:43:50 【问题描述】:

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

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

【问题讨论】:

问题是..?你必须显示一些代码 【参考方案1】:

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

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

见http://hsqldb.org/doc/2.0/guide/triggers-chapt.html

【讨论】:

【参考方案2】:

对于 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 参数)。 oldRow 参数对于行级 INSERT 触发器为空。对于行级 DELETE 触发器,newRow 参数为空。对于表级触发器,两个参数均为空(即,无法访问数据)。 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

【讨论】:

【参考方案3】:

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

【讨论】:

【参考方案4】:

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

【讨论】:

以上是关于使用java的hsql数据库连接的主要内容,如果未能解决你的问题,请参考以下文章

如何在应用程序外部连接/查询 HSQL 数据库?

HSQL - 识别打开连接的数量

从单元测试连接时,HSQL 立即关闭连接

从 DatabaseSwingManager 连接时 HSQL 服务器模式引发异常 java.sql.SQLTransientConnectionException

HSQL SQLTool无法连接

无法获得 JDBC 连接;嵌套异常是 java.sql.SQLException:无法加载 JDBC 驱动程序类 'org.hsql.jdbcDriver'