C++监控SQLserver数据库表中数据变化

BearKim9012 2017-11-05 08:49:27
网上大多都是用了.net的SQLdependency来监控数据库表中数据变化,但我的程序是C++,现在我是以MFC ado的方式连接的SQLserver数据库,我想实现的是:当SQLserver表中数据记录增加时,C++程序能知道数据发生了变化并只读取这些增加的数据,有什么方式推荐么,希望能详细点。
...全文
837 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
吉普赛的歌 版主 2017-11-06
  • 打赏
  • 举报
回复
http://blog.csdn.net/jiang1986829/article/details/48541921 建议 DAL (数据访问层) 全部由C#来完成。 毕竟这是C#的强项, 另外减少C++调用C#产生数据的问题。
OwenZeng_DBA 2017-11-06
  • 打赏
  • 举报
回复
引用 5 楼 qq_38699083 的回复:
是只读取增加部分,我也想过在表中设置一个自增的ID,然后每次读取大于自增数据就好,但是我要做的是实时更新,就是每次有数据变动就,C++程序就读取数据,数据更新时间不确定,所以如果没有类似于SQLdependency的方法就只有不停查询数据库,效率很低,我也看了CDC的方法,但现在问题是SQLserver的版本也不一定都是2008版以上,一楼的方法不知道有没有帖子可以参考呢,谢谢
cdc也没法实现你说的实时更新,他只是捕捉这个写入并记录下来。。比较数据库没法通知程序。还是要你的程序定时刷新捕捉最新的数据
BearKim9012 2017-11-06
  • 打赏
  • 举报
回复
是只读取增加部分,我也想过在表中设置一个自增的ID,然后每次读取大于自增数据就好,但是我要做的是实时更新,就是每次有数据变动就,C++程序就读取数据,数据更新时间不确定,所以如果没有类似于SQLdependency的方法就只有不停查询数据库,效率很低,我也看了CDC的方法,但现在问题是SQLserver的版本也不一定都是2008版以上,一楼的方法不知道有没有帖子可以参考呢,谢谢
OwenZeng_DBA 2017-11-06
  • 打赏
  • 举报
回复
引用 楼主 qq_38699083 的回复:
网上大多都是用了.net的SQLdependency来监控数据库表中数据变化,但我的程序是C++,现在我是以MFC ado的方式连接的SQLserver数据库,我想实现的是:当SQLserver表中数据记录增加时,C++程序能知道数据发生了变化并只读取这些增加的数据,有什么方式推荐么,希望能详细点。
只读取增加,就是insert的部分,update,delete的情况不用考虑吗。那可以在表上增加一个自增量。每次程序读取最大值记录下来,下次就读取大于这个自增量的数据、
日月路明 2017-11-06
  • 打赏
  • 举报
回复
在我们的项目中使用时间戳来完成,记录当前最大的时间戳dt,下一个监测点,只要选取时间戳大于dt的记录就是最新的或者修改过的
吉普赛的歌 版主 2017-11-06
  • 打赏
  • 举报
回复
方式一: C++ 调 C#的dll (有难度, 不一定能成功); 方式二: 用 cdc 捕获数据变化( SQL Server2008 或以上版本 ), C++定时读取; http://blog.csdn.net/yenange/article/details/49636215 方式三: 用 历史记录表 (SQL Server 2016 或以上版本), C++定时读取。 http://www.cnblogs.com/jenrrychen/p/5196948.html
gh1223181184 2017-11-06
  • 打赏
  • 举报
回复
SQL SERVER 可以使用dll 。 你用C++ 写个dll 。然后在数据库里监控插入事件调用你的dll就可以了

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧