如今所熟知的监控对象是表
相信你是知道表的监控的吧
方法很多
但是对数据库的监控,在下
确实不清楚
以下是我所想的监控表的方
法,希望对阁下有用
在监控表时是不希望对原有的程序进行修改的,吃力不讨好的事情咱们是不会做的!
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 ),在这个方法里去 *** 作数据库的使用,针对变化后的使用。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)