mysql 表变化 通知_sqlDependency监控数据库数据变化,自动通知

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Configuration;

using System.Data.SqlClient;

using System.Data;

namespace Sample2

{

class Program

{

private static string _connStr;

static void Main(string[] args)

{

_connStr = "Data Source=localhost;User Id=sa;Password=xxx;Database=xxx;Pooling=true;Max Pool Size=600;Min Pool Size=0;";

SqlDependency.Start(_connStr);//传入连接字符串,启动基于数据库的监听

UpdateGrid();

Console.Read();

}

private static void UpdateGrid()

{

using (SqlConnection connection = new SqlConnection(_connStr))

{

connection.Open();

//依赖是基于某一张表的,而且查询语句只能是简单查询语句,不能带top或*,同时必须指定所有者,即类似[dbo].[]

using (SqlCommand command = new SqlCommand("select D_Id,D_Name,D_Password,D_Else,D_Amount From [dbo].[TestTable]", connection))

{

command.CommandType = CommandType.Text;

SqlDependency dependency = new SqlDependency(command);

dependency.OnChange += new OnChangeEventHandler(dependency_OnChange);

using (SqlDataReader sdr = command.ExecuteReader())

{

Console.WriteLine();

while (sdr.Read())

{

Console.WriteLine("{0}---{1}---{2}---{3}---{4}", sdr["D_Id"].ToString(),

sdr["D_Name"].ToString(), sdr["D_Password"].ToString(), sdr["D_Else"].ToString(), sdr["D_Amount"].ToString());

}

sdr.Close();

}

}

}

}

private static void dependency_OnChange(object sender, SqlNotificationEventArgs e)

{

UpdateGrid();

}

}

}use master

ALTER DATABASE WINE_CLOUD set ENABLE_BROKER

/*

想启用Broker时,出现以下错误:

无法启用数据库 "db2" 中的 Service Broker,因为已存在启用的具有相同 ID 的 Service Broker。

解决办法:

use master

alter database db2 set NEW_BROKER

然后再运行

use master

ALTER DATABASE db2 set ENABLE_BROKER

*/

--验证是否能启用

go

Select DATABASEPROPERTYEX('WINE_CLOUD','IsBrokerEnabled')

--修改数据库使用者(至关重要)

exec sp_changedbowner @loginame = 'sa'

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值