有没有办法使用 Java 和 JDBC 来监听 Microsoft SQL 数据库表的变化?

Posted

技术标签:

【中文标题】有没有办法使用 Java 和 JDBC 来监听 Microsoft SQL 数据库表的变化?【英文标题】:Is there a way to listen for changes in an Microsoft SQL database table using Java and JDBC? 【发布时间】:2017-03-06 15:43:46 【问题描述】:

我有一个应用程序连接到 Microsoft SQL Server 上的数据库,我需要监听对其中一个表所做的任何更改(主要是创建和更新)并在该应用程序中触发 java 中的操作。 有什么办法吗?

【问题讨论】:

一种方法是在您的数据表上设置触发器,以便在更改时填充其他表。您的应用程序会经常轮询这些表并删除它处理的行。我觉得这已经过时了,不过可能有更综合的方法可以做到这一点。 基本上,除了定期轮询数据库表之外别无他法。如果可能,您应该尝试让负责更新表的参与者直接通过某种 API 调用 Java 代码;这会更简单,更快。在不了解上下文或实际问题的情况下,很难给出好的建议。 【参考方案1】:

这取决于您需要多快对表上的更改做出反应以及您对数据库的访问权限。 如果您可以容忍几秒钟的延迟,我会(每隔几秒钟)从系统表中查询表信息以获取最后更新的信息。这仅在您有权访问系统表时才有效。

尝试谷歌搜索“microsoft sql table get last updated information”,有很多示例可能对您的特定情况有所帮助。

【讨论】:

这个想法是在插入后立即从数据库中检索行数据,可能有多个条目。

以上是关于有没有办法使用 Java 和 JDBC 来监听 Microsoft SQL 数据库表的变化?的主要内容,如果未能解决你的问题,请参考以下文章

测试 Tomcat 的 JDBC 池连接

Spring JPA无法提交jdbc事务的解决办法

有没有办法让多个进程共享一个监听套接字?

在连接本机oracle数据库的时候提示:ORA-12541:TNS:没有监听程序

使用 Oracle 瘦客户端和 jdbc 强制加密网络流量?

Java任务控制监听器?