【问题标题】:hsql database connection using java使用java的hsql数据库连接
【发布时间】:2023-03-27 09:52:03
【问题描述】:

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

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

【问题讨论】:

  • 问题是..?你必须显示一些代码

标签: java hsqldb


【解决方案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】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-05-16
          • 2021-06-30
          • 2017-07-27
          • 1970-01-01
          • 2011-12-31
          • 2021-11-24
          • 2012-10-03
          • 1970-01-01
          相关资源
          最近更新 更多