如何检测数据库是否更新

如何检测数据库是否更新,第1张

你所想监控的对象是数据库

如今所熟知的监控对象是表

相信你是知道表的监控的吧

方法很多

但是对数据库的监控,在下

确实不清楚

以下是我所想的监控表的方

法,希望对阁下有用

在监控表时是不希望对原有的程序进行修改的,吃力不讨好的事情咱们是不会做的!

1.在所监控的表对象中增加两个字段:

insertDate(数据写入时间)--设置默认值为系统当前时间getdate()

latestDate(最近更新时间)--设置默认值为系统当前时间getdate()

对所监控的表建立insert、update、delete触发器

建立一张记录表log(记录表中的字段可根据自己的需要添加)

以上三个触发器的共同点:

将该表被执行的动作与数据记录到这张记录表中

不同点:

update触发器时还需要更新被修改数据的最后修改时间latestDate

这样可以根据latestDate和insertDate中的时间判断该数据是否被更改、被更改的时间等。

也可以根据log表中的记录知道哪些数据被insert、update、detele等信息

以上只是自己的观点(比较罗嗦,哈!)

在android中经常会用到改变数据库内容后再去使用数据库更新的内容,很多人会重新去query一遍,但是这样的问题就是程序会特别占内存,而且有可能会搂关cursor而导致程序内存未释放等等。其实android内部提供了一种ContentObserver的东西来监听数据库内容的变化。

 ContentObserver的构造函数需要一个参数Hanlder,因为ContentObserver内部使用了一个实现Runnable接口的内部类NotificationRunnable,来实现数据库内容的变化。需要使用hanlder去post消息。注册ContentObserver的方法是:getContentResolver().registerContentObserver(uri, notifyForDescendents, observer).

 上面3个参数为:uri----Uri类型,是需要监听的数据库的uri.

 notifyForDescendents---boolean true的话就会监听所有与此uri相关的uri。false的话则是直接特殊的uri才会监听。一般都设置为true.

 observer-----ContentObserver 就是需要的contentobserver.

 初始化一个ContentObserver对象,重载onChange(boolean ),在这个方法里去 *** 作数据库的使用,针对变化后的使用。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9946282.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存