подключение к базе данных hsql с использованием Java - PullRequest
0 голосов
/ 22 февраля 2011

У меня есть сценарий, в котором моя Java-программа должна постоянно взаимодействовать с таблицей базы данных, например, моя Java-программа должна получать данные моей таблицы, когда в нее добавляются новые строки во время выполнения. Должна быть постоянная связь между моей программой и базой данных.

Если в таблице изначально есть 10 строк, а пользователь добавил 2 строки, он должен обнаружить это и вернуть строки.

Ответы [ 4 ]

3 голосов
/ 22 февраля 2011

В HSQLDB это поддерживается без непрерывного опроса.

HSQLDB TRIGGER поддерживает синхронные или асинхронные уведомления, отправляемые событием триггера. Целью может быть приложение пользователя или любое другое приложение.

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

1 голос
/ 15 ноября 2013

Для HSQL вы можете использовать триггер.Ссылка: http://hsqldb.org/doc/2.0/guide/triggers-chapt.html

Действие триггера в Java

Действие триггера может быть записано как класс Java, который реализует интерфейс org.hsqldb.Trigger.Этот интерфейс имеет единственный метод, который вызывается при активации триггера, до или после события.Когда метод вызывается механизмом, он предоставляет тип триггера в виде значения int, определенного интерфейсом (в качестве аргумента типа), имя триггера (в качестве аргумента trigName), имя таблицы (в качестве аргумента tabName), СТАРЫЙ (как аргумент oldRow) и НОВЫЙ (как аргумент newRow).Аргумент oldRow является нулевым для триггеров INSERT уровня строки.Аргумент newRow является нулевым для триггеров DELETE уровня строки.Для триггеров на уровне таблицы оба аргумента равны нулю (то есть нет доступа к данным).Аргумент 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
0 голосов
/ 22 февраля 2011

Это невозможно.Вам придется регулярно опрашивать базу данных, чтобы обнаружить изменения.

0 голосов
/ 22 февраля 2011

Что вы подразумеваете под непрерывным общением? Соединение с базой данных должно оставаться открытым после того, как вы завершите задание здесь. Но вам придется продолжать опрос, чтобы получить новые записи.

...