我想实现一个功能,就是如果数据库一发现有新数据,就会自动执行某程序这个自动发现新数据和自动执行程序好实现吗?谢谢大家!

解决方案 »

  1.   

    这个需要有个程序监控数据库,最简单的就是间隔多少时间SELECT一次如果满足条件 就自动调用指定的程序
      

  2.   

    按以上两位说的话,程序是不是要手动打开,然后利用select和Timer看看数据库里有没有新数据,然后再自动运行?select从数据库检索数据,Timer设定个间隔时间?是这样吗?请原谅我问些低能的问题    谢谢各位
      

  3.   

    想开机运行,就写一了windowns服务吧.
      

  4.   

    如果手动实现这个功能,似乎只能加n多的触发器了,然后表改动时,把更改记录下来,然后用一个程序来不断的扫描。
    当然你也可以参考一下SqlCacheDependency,它是用于同步数据库和缓存之间的一种机制,也就是当数据库数据发生变动后,通过SqlCacheDependency可以及时的把数据变动同步到缓存中,这个思路也是可以看一下的。
      

  5.   

    我想实现一个功能,就是如果数据库一发现有新数据,就会自动执行某程序 这个自动发现新数据和自动执行程序好实现吗? 谢谢大家!
    这个问题很模糊、你是想调用SqlServer服务器上的程序,还是客户端的程序
    一、写在应用程序中(调用客户端)
        在你将数据插入数据库成功时直接调用你想调用的应用程序
        //调用记事本
        System.Diagnostics.Process.Start("notepad.exe");
    二、在数据库库触发器中调用,用xp_cmdshell,但要求必须有SA权限
    另外,你的想法,绝对不是有一个好的分布式想法。
       
      

  6.   

    还是在数据库中写一个Trigger还处理吧,这样方便及时。
      

  7.   

    更新通知就是实现类似功能的,不过整个做下是比较麻烦的,大概3,5千行代码吧。我们之前弄的原理跟楼上的差不多:在DB中弄个零时表,更新DB时(可以是触发器)往该表写数据,需要响应的程序有个Timer定期查询零时表,有自己的需要的数据则执行相应操作,并把该零时表对应数据删除。
      

  8.   


    这个思路可以考虑,虽然没有用过SqlCacheDependency,如果用TIMER去不停的读数据库,那样占用的资源会比较多,还是要想一些 数据库操作类,当数据变化时就触发一个方法即可,使用起来也比较容易