使用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数据库连接的主要内容,如果未能解决你的问题,请参考以下文章
从 DatabaseSwingManager 连接时 HSQL 服务器模式引发异常 java.sql.SQLTransientConnectionException
无法获得 JDBC 连接;嵌套异常是 java.sql.SQLException:无法加载 JDBC 驱动程序类 'org.hsql.jdbcDriver'