.net - OracleDependency 不会触发事件
问题描述
我想在表 x 的表更改上创建 Oracle DB 的侦听器,其值根据表 y 的插入/更新而更改,因此我编写了以下代码:
public static OracleDependency dependency;
private static OracleConnection con;
private static OracleCommand cmd;
static void Main(string[] args)
{
con = new OracleConnection(ConfigurationManager.ConnectionStrings[ConfigurationManager.AppSettings["DBString"]].ConnectionString);
cmd = new OracleCommand(
"select * from X ", con ) ;
con.Open();
//OracleDependency.Port = 23;
//OracleDependency.Address = "11.10.11.1";
cmd.AddRowid = true;
dependency = new OracleDependency(cmd);
dependency.OnChange += Dependency_OnChange;
bool IsNotified = false;
dependency.QueryBasedNotification = true;
cmd.Notification.IsNotifiedOnce = false;
cmd.ExecuteNonQuery();
//con.Close();
Console.WriteLine("Listeneing to DB....");
// Loop while waiting for notification
while (IsNotified == false)
{
Thread.Sleep(100);
}
}
private static void Dependency_OnChange(object sender, OracleNotificationEventArgs args)
{
DataTable dt = args.Details;
string msg = string.Empty;
msg = "THe following DB objects were changed";
foreach (string resource in args.ResourceNames)
msg += resource;
msg += "\n\n Details";
for (int i = 1; i < dt.Rows.Count; i++)
{
msg += "Resource Name: " + dt.Rows[i].ItemArray[0];
string type = Enum.GetName(typeof(OracleNotificationInfo), dt.Rows[i].ItemArray[1]);
msg += "\nchange type: " + type;
Console.WriteLine(msg);
}
}
当我在 user_change_notification_regs 中选择条目时,我看到添加了条目,但是一旦提交了任何事务,条目就会被删除并且不会触发通知事件,代码有什么问题吗?
解决方案
推荐阅读
- javascript - 节点 js 中的电子邮件确认
- c++ - C++:是否可以在执行时设置 void-pointer、variant-object 或 any-object 的类型?
- performance - 试图查看 Lua 脚本完成执行需要多长时间
- python - CVXPY 中的黑盒功能
- c# - 如何在 Windows 控制台中使用超过 16 种颜色?
- macos - 如何解决丢失的符号:libSystem.B.dylib (OSX) 中的 __chkstd_darwin
- python - 分配值时二维数组的值很好,但是当我在 python 中再次打印它时会发生变化
- java - ManyToOne MyBatis 框架
- javascript - 当我使用 innerHTML 时返回未定义
- javascript - 从按钮 JavaScript 中给出可变数字类型值