怎样监听到数据库的数据变化

怎样监听到数据库的数据变化,第1张

在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 ),在这个方法里去 *** 作数据库的使用,针对变化后的使用。

环境 centos 54 + oracle 10g r2

已有实例 xxxio 和监听listener 端口1521

现又新建实例 xxxdb 监听名称listener02 端口 1522实现 listener02 只加载实例 xxxdb

1创建数据库 实例名xxxdb

2netca 创建监听 listener02 端口1522

3配置listenerora 如下

# listenerora Network Configuration File: /u01/app/oracle/product/10g//network/admin/listenerora

# Generated by Oracle configuration tools

SID_LIST_LISTENER =

(SID_LIST =

(SID_DESC =

(SID_NAME = xxxio)

(ORACLE_HOME = /u01/app/oracle/product/10g/)(PROGRAM = extproc)

)

(SID_DESC =

(SID_NAME = +ASM)

(ORACLE_HOME = /u01/app/oracle/product/10g/))

(SID_DESC =

(SID_NAME = xxxdb)

(ORACLE_HOME = /u01/app/oracle/product/10g/))

)

SID_LIST_LISTENER02 =

(SID_LIST =

(SID_DESC =

(SID_NAME = xxxdb)

(ORACLE_HOME = /u01/app/oracle/product/10g/))

)

LISTENER =

(DESCRIPTION_LIST =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))(ADDRESS = (PROTOCOL = TCP)(HOST = 127001)(PORT = 1521)))

)

LISTENER02 =

(DESCRIPTION_LIST =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC2))(ADDRESS = (PROTOCOL = TCP)(HOST = 127001)(PORT = 1522)))

)

说明 : 自己在配置过程中也遇到了好多问题 ,最后通过查看资料和实际测试 证明上述的配置是正确的1首先用netca创建 listener02 后 会在配置文件listenerora中 生成如下的信息 。这说明一个监听创建成功。

可以启动 、关闭 。但是没有加载实例。

LISTENER02 =

(DESCRIPTION_LIST =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC2))(ADDRESS = (PROTOCOL = TCP)(HOST = 127001)(PORT = 1522)))

)

2在配置文件listenerora 中加入如下信息 ,才能将实例xxxdb 加载到监听 listener02中 实现 各尽其职SID_LIST_LISTENER02 = --这的命名是SID_LIST_监听名(SID_LIST =

(SID_DESC =

(SID_NAME = xxxdb)

(ORACLE_HOME = /u01/app/oracle/product/10g/))

)

以上就是关于怎样监听到数据库的数据变化全部的内容,包括:怎样监听到数据库的数据变化、oracle数据库中有2个实例,监听怎么配置、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存