【发布时间】:2010-12-11 15:17:48
【问题描述】:
我有以下代码:
OracleConnection conn = new OracleConnection(connString);
OracleCommand command = new OracleCommand("select * from testtable", conn);
conn.Open();
OracleDependency.Port = 2010;
OracleDependency dependency = new OracleDependency(command);
command.AddRowid = true;
command.Notification.IsNotifiedOnce = false;
dependency.OnChange += new OnChangeEventHandler(dependency_OnChange);
command.CommandTimeout = 1000;
DataTable t = new DataTable();
OracleDataAdapter adapter = new OracleDataAdapter(command);
adapter.Fill(t);
conn.Close();
这是一个非常简单的代码,它使用 Oracle 通知服务来接收有关特定表更改的通知。
我的问题是,当我调用 adapter.Fill(t); 时,执行只是阻塞了。如果没有附加依赖项,则该命令将在一个实例中执行,因此它不是数据库或数据。我可以通过查询表user_change_notification_regs看到回调注册到数据库,并且还打开了指定的端口(2010):
net8://(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST='myIp')(PORT=2010)))?PR=0
我束手无策,没有办法尝试。
【问题讨论】:
标签: oracle10g dependencies notifications oraclecommand