我有一个连接到SQLite3数据库的Java程序。我想知道,如果在表中添加或删除记录(不一定是从我的程序中),是否有办法通知我的程序。我在考虑触发器,但找不到任何如何将我的Java代码与触发器挂钩的示例。
dzjeubhm1#
您可以使用data_version杂注(在任何语言中,不仅仅是Java)来查看是否有其他东西修改了数据库。如果在此期间通过任何其他连接将更改提交到数据库,则从同一连接两次调用“Pragma data_Version”返回的整数值将不同。对于在同一数据库连接上进行的提交,“PRAGMA DATA_VERSION”值不变。因此,基本上是执行一条PRAGMA data_version语句,它为您提供保存的具有整数值的单行。下次您想要查看是否有其他东西修改了数据库时,请再次执行此操作,并比较新旧数字以查看它们是否不同。如果您想要更多的推送通知,您可以将其与Java NIO WatchService机制结合起来,以监视数据库文件(如果您正在使用WAL日志)的更改,然后在触发时检查data_version。如果需要,This SO Q&A有望帮助您开始使用它。
data_version
PRAGMA data_version
WatchService
1条答案
按热度按时间dzjeubhm1#
您可以使用
data_version
杂注(在任何语言中,不仅仅是Java)来查看是否有其他东西修改了数据库。如果在此期间通过任何其他连接将更改提交到数据库,则从同一连接两次调用“Pragma data_Version”返回的整数值将不同。对于在同一数据库连接上进行的提交,“PRAGMA DATA_VERSION”值不变。
因此,基本上是执行一条
PRAGMA data_version
语句,它为您提供保存的具有整数值的单行。下次您想要查看是否有其他东西修改了数据库时,请再次执行此操作,并比较新旧数字以查看它们是否不同。如果您想要更多的推送通知,您可以将其与Java NIO
WatchService
机制结合起来,以监视数据库文件(如果您正在使用WAL日志)的更改,然后在触发时检查data_version
。如果需要,This SO Q&A有望帮助您开始使用它。