内容简介:有个小项目(后来由另一个小组以Java开发了),内容是监控一个Oracle数据库。如果其中一个表A有数据变动,则需要将相关内容重组后通过接口发送给B。通常的解决办法是定时查询,时间间隔可以小一点,还可以加上时间戳之类的,减少查询量。在与经常访问数据库的同事聊的过程,发现通过监听数据库的变动也是一种可行方案,于是准备尝试一下。查了一下,.Net对自己家SQL Server的监听用的是SQLDependency类,而Oracle的相应实现则是OracleDependency类,这个应该是ODP.Net的一部分。
有个小项目(后来由另一个小组以 Java 开发了),内容是监控一个Oracle数据库。如果其中一个表A有数据变动,则需要将相关内容重组后通过接口发送给B。
通常的解决办法是定时查询,时间间隔可以小一点,还可以加上时间戳之类的,减少查询量。在与经常访问数据库的同事聊的过程,发现通过监听数据库的变动也是一种可行方案,于是准备尝试一下。
查了一下,.Net对自己家SQL Server的监听用的是SQLDependency类,而Oracle的相应实现则是OracleDependency类,这个应该是ODP.Net的一部分。
操作流程如下:
- 安装Oracle Developer Tools for Visual Studio
下载页面时 https://www.oracle.com/technetwork/developer-tools/visual-studio/downloads/index.html ,下载前请确认自己的Visual Studio版本,我的2015;
2. 在VS中创建项目,并利用NuGet包管理器安装Oracle.ManagedDataAccess
3. 完善配置文件(特别是连接串)
创建ADO.Net实体模型,选择Oracle 数据库 (ODP.NET, 托管驱动程序),然后选择TN或者ET方式链接。果是ET方式,输入服务器、端口、用户名和密码,创建成功后,连接字符串就自动设置好了;
4. 创建命令并设置监听如下
其中Properties.Settings.Default.OracleDevConnStr是连接字符串名字
OracleConnection con1 = new OracleConnection(Properties.Settings.Default.OracleDevConnStr); var sql = "select * from ZQ"; OracleCommand cmd1 = new OracleCommand(sql, con1); con1.Open(); cmd1.AddRowid = true; OracleDependency dep = new OracleDependency(cmd1); cmd1.Notification.IsNotifiedOnce = false; dep.OnChange += OnDbChange;
5. 处理OnDbChange事件
private void OnDbChange(object sender, OracleNotificationEventArgs eventArgs) { //TODO:... }
此外,如果阅读英文无障碍,可以查看如下链接 https://www.oracle.com/webfolder/technetwork/tutorials/obe/db/hol08/dotnet/changenotification/odpnetchg_otn.htm 。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Web Data Mining
Bing Liu / Springer / 2011-6-26 / CAD 61.50
Web mining aims to discover useful information and knowledge from Web hyperlinks, page contents, and usage data. Although Web mining uses many conventional data mining techniques, it is not purely an ......一起来看看 《Web Data Mining》 这本书的介绍吧!