我正在构建连接到 MySQL数据库的 C#Winforms 客户端。可以从多个用户和计算机访问客户端。我需要一种方法让所有客户端以某种方式通知,只要另一个客户端对数据库内容进行更改,以便在客户端刷新。
因为当用户打开显示数据库内容的表单时,将在运行时获取内容。所以这不是问题。如果进行了更新,则用户将看到它。
我的问题是,如果用户打开了一种数据库内容,另一位用户更改了数据库内容。
我想过设置某种类型的计时器,每分钟都会获得用户当前正在查看的所有数据库内容。但这非常耗时且根本没有效率。 另一个想法是每分钟检查更新,但我不知道如何实现。
有什么建议吗?
有没有办法从客户端检查更新?
还有其他方法可以执行此操作吗?
答案 0 :(得分:0)
您可以更改表格,以便在更新时存储时间戳。 例如
CREATE TABLE foo (
id INT PRIMARY KEY
x INT,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
ON UPDATE CURRENT_TIMESTAMP,
KEY (updated_at)
);
上面的代码将当前时间戳存储到新行,并在编辑行时将其更改为编辑的时间。通过这种方式,您可以获取数据,在order by
模式下对其进行排序(descending
)并获取最高记录。这样您就可以获得表格中的最新更新记录。
如果您想了解整个数据库,那么您必须比较每个表的最新更新记录并获取最新的记录。