当数据库(Oracle)中的某一个表的某行记录有更新时,怎样及时的通知应用程序。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了当数据库(Oracle)中的某一个表的某行记录有更新时,怎样及时的通知应用程序。相关的知识,希望对你有一定的参考价值。

各位高手,请问:
现在是需要实时监控数据库的某字段,当数据库(Oracle)中的某一个表的某行数据有更新时,需要通知应用程序,应该程序做相应的变更。
注:程序是服务类型,会一直跑,除了用spring添加定时任务,让应用程序每隔一段时间扫一次数据库来判断变化这种低效方法外,有没有能让ORACLE主动通知程序或者其他更好的方法??求指教。
PS:使用的是java+oracle。

ORACLE好像不带自动推送功能,只能是应用程序主动扫描。不过貌似你不用扫描整个表吧,效率并不会很低。比如在要监控的表上建一个行级触发器,如果有更新,就在日志表里记一条,包含变化行的主键信息,甚至更多细节。应用程序也只需定时扫描日志表而已,效率不会太低。 参考技术A 可以用DBMS_PIPE包利用管道和外部程序通信的。
具体用法:
使用dbms_pipe.create_pipe('mypipe'); 建立一个管道。
在表上建立触发器判断如果是某一行发生变更,使用dbms_pipe.send_message('MyMessage');
向管道发送消息
java做轮询使用dbms_pipe.receive_message('mypipe',15); 接收管道消息。如果有则显示更新。
管道不用了,使用dbms_pipe.remove_pipe('mypipe');将管道删除。
参考技术B 可以用DBMS_PIPE包利用管道和外部程序通信的。
具体用法:
使用dbms_pipe.create_pipe('mypipe'); 建立一个管道

在表上建立触发器判断如果是某一行发生变更,使用dbms_pipe.send_message('MyMessage');
向管道发送消息

java做轮询使用dbms_pipe.receive_message('mypipe',15); 接收管道消息。如果有则显示更新。
管道不用了,使用dbms_pipe.remove_pipe('mypipe');将管道删除。本回答被提问者和网友采纳
参考技术C oracle中数据变更无法自动推送到应用程序,只能通过应用程序定时扫描方式解决问题。 参考技术D 触发器能不能行呢

如何定位DataGridView中的某行中的某列

如何定位DataGridView中的某行中的某列。

参考技术A onclick事件中加
for (int i = 0; i < gvMusic.Rows.Count; i++)

CheckBox chkMusic = (CheckBox)gvMusic.Rows[i].FindControl("chkMusic");
if (chkMusic.Checked)

int musicID=int.Parse(gvMusic.Rows[i].Cells[0].Text.ToString());
//上面的是读ID,就这个方式读获取某一个GridView中单元格的值的语法是:
GridView1.Rows[0].Cells[0].Text; 第一行第一个单元格的值.

获取单元格中的控件:
CheckBox chk1=(CheckBox)GridView1.Rows[0].Cells[1].Controls[1];
获取第一行第二列中的控件.cells[1]中的1是控件所在的那个单元格的列号,从零开始.
Controls[1],虽然你可能只往里面加了一个控件,但单元格系统自动会带一个什么控件进去,所以索引要写1.
或者用cells.findcontrol("控件ID")也可以找到.

参考资料:http://www.coolphil.cn/article/5.htm

参考技术B Datagridview.Rows[9].cell[4]吧。?
还有别的办法。。。嘿嘿。。几天没动手。忘了呵。本回答被提问者采纳
参考技术C //获取选中行第i个单元格的值
DataGridView控件名.selectedRows[0].cell[i].values
参考技术D Datagridview.Rows[9].Columns[4] 第5个回答  2009-01-16 DataGrid[A][B]可以么? 学习了

以上是关于当数据库(Oracle)中的某一个表的某行记录有更新时,怎样及时的通知应用程序。的主要内容,如果未能解决你的问题,请参考以下文章

DELPHI 如何选中MEMO中的某行内容 记录显示到EDIT

如何定位DataGridView中的某行中的某列

如何解决ORACLE中表一得列名的别名为另一表中的某一字段的值?

为啥 Chrome 会在 jQuery 中的某行暂停?

linux下向一个文件中的某行插入数据的做法

vs2010 asp.net 中,怎么将一个DataTable中的某行数据 复制给另一个DataTable中。