C#实时获取MySQL数据变动的问题
发布网友
发布时间:2022-04-08 21:29
我来回答
共7个回答
热心网友
时间:2022-04-08 22:59
哦,嗯,我简单说下,Web式的系统为Php的.C#做的系统本身为C/S架构,用Timer控件是绝对不聪明的办法,我们只要在Php系统上做点手脚即可:
我的解决方法为:Php系统只要有数据提交的地方去加一段代码,让其用Udp给某个端口发送相关消息.C#的服务端一直监听那个指定的端口,只要收到相关正确的信息,立即通知给客户端,比如类似于QQ弹窗提示空间有新留言,如此实现实时获取MySQL数据库的实时变动.
放个QQ:14654506,或者cgy@d9tec.com(输入好友的地方输入这个)
热心网友
时间:2022-04-09 00:17
你可以在c#中加入timer控件,让他1分钟或多长时间读一下数据库中的表,把表的内容存起来,然后对比,比如说条数,如果你删除了一条一定是下次在查的时候少了一条那么count(*)就不===恒等了,如果修改了的话那么把两份数据都合出来用反射对比如果值变了那么也提示。这个做起来不是很麻烦,希望这点小小的思路对你有用
热心网友
时间:2022-04-09 01:51
———这是我做QQ项目时,系统消息喇叭闪动的代码。(主要告诉你timer控件)
//系统消息闪动
int index = 0;
private void tmrSystem_Tick(object sender, EventArgs e)
{
index = index == 0 ? 1 : 0;
tSButton4.Image = ilSystemMessages.Images[index];
SoundPlayer soundPlayer = new SoundPlayer("system.wav");
soundPlayer.Play();
}
——tmrSystem 是一个timer控件,你只需在(适当时间;比如:加载事件)启用它:
tmrSystem.Enabled = true;
tmrSystem.Start();
当这个timer一启用,每隔0.1(这是我设的,你也可以在timer控件的属性中设定啊)秒图片就会交换一次、喇叭就会响一次,同样把里面的事件换成读取数据库事件,也就是每隔0.1秒读取数据一次啦!
———对于增加或删除一行就有提示,那就是你写Sql语句的问题了,可以用计算数据总数(count(*)),并记录此次的记录,若当下次查询时数据count不等了,那么就用MessageBox或弹出一个窗体呀什么的事件就行啦!
——不清楚的Hi哈!
热心网友
时间:2022-04-09 03:43
可不可以用触发器实现,然后这些动作用触发器监听触发就可以了。
用触发器的好处就是,执行效率比较高,比较安全。
仅供参考。
热心网友
时间:2022-04-09 05:51
所有对数据库的操作,除了读取都会改变某个全局变量(比如Web程序中的Application)
创建一个*监听此变量,一旦改变则触发事件提示用户。
PS:不知道楼主程序结构如何,如果架构好的话改动也不会很大。
热心网友
时间:2022-04-09 08:15
触发器只能在数据库里工作,无法反馈给程序。换个思路,用触发器给改动过的记录加个标记(在表里增加一个列,存放这个标记),用C#就很容易找到了。
热心网友
时间:2022-04-09 10:57
你用静态变量吧!
当insert的时候,触发不就可以了吗,这个要改代码。
如果不改代码的话,只能是轮询。