当数据库(Oracle)中的某一个表的某行记录有更新时,怎样及时的通知应用程序。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了当数据库(Oracle)中的某一个表的某行记录有更新时,怎样及时的通知应用程序。相关的知识,希望对你有一定的参考价值。
各位高手,请问:
现在是需要实时监控数据库的某字段,当数据库(Oracle)中的某一个表的某行数据有更新时,需要通知应用程序,应该程序做相应的变更。
注:程序是服务类型,会一直跑,除了用spring添加定时任务,让应用程序每隔一段时间扫一次数据库来判断变化这种低效方法外,有没有能让ORACLE主动通知程序或者其他更好的方法??求指教。
PS:使用的是java+oracle。
具体用法:
使用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