社区
数据库及相关技术
帖子详情
在程序中如何知道数据库里面的值发生了变化?
fidt982
2005-01-16 11:30:58
我现在用的是SQLSEVER数据库,,在我的服务器这端,我想实现当数据库里的值发生改变时,就调用一个程序,另外数据库的值是下面的客户端更改的.通过什么东西来实现.
...全文
410
18
打赏
收藏
在程序中如何知道数据库里面的值发生了变化?
我现在用的是SQLSEVER数据库,,在我的服务器这端,我想实现当数据库里的值发生改变时,就调用一个程序,另外数据库的值是下面的客户端更改的.通过什么东西来实现.
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
18 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
fidt982
2005-01-20
打赏
举报
回复
谢谢两位,,结帧,分数在少,望见谅..................
weill
2005-01-19
打赏
举报
回复
请注意的一点是,请使用SQL服务器的时间,而不要使用每个客机的时间哦……
否则可能会一片混乱,咯咯……
weill
2005-01-19
打赏
举报
回复
肯定要达到当其中的一台客户端对下面硬件进行改动时,其它的客户端界面也要跟着变过来.
如果是就这句话而言,那么,那是容易得不能再容易了。
只要加一个时间日期字段就完事。这个字段里的内容是最后被修改的日期,时间(例“2005-01-01 12:55:30”)。
每个客户端每过1秒(注意,这个值要根据客机台数,网络情况而定,决定了客机的响应时间,和服务器的负担)取一次这个值与现有值对比,如果不同,则进行更新。
就楼主的项目而言,不应使用长时间联接的ADO,而使用用完就关的ADO比较好,呵呵。
fidt982
2005-01-19
打赏
举报
回复
这样的,我现在做的是一个网管系统,总体分成三块,底层通信一块,SQL服务器一块,上面的的客户端是一块,底层通信专门负责和下面的硬件找交道,进行通信,并把相关的信息入数据库中,用户界面这块只和数据库打交道,把要发送的相关命令等都直接存入到数据库中.还要把相关的信息转化成界面形式展现给用户.
图示:
底层通信---------------SQL服务器------------------网管A
|
|
|_____________________网管B
|
|_____________________网管C
当SQL服务器中的数据发生修改时,客户端这块的界面也要跟着变化
客户端也可以对下面的硬件进行配置,比方如对整个硬件设备的拓扑图的管理等,肯定要达到当其中的一台客户端对下面硬件进行改动时,其它的客户端界面也要跟着变过来.
谢谢两位了,希望给个建议,这个东西年前还得交,急啊!!!!!!!
kwokwinglau
2005-01-19
打赏
举报
回复
<weill(每天提一问,一天学一点) ( )>說的并发操作可能不是楼主想要的功能.并发操作是要在开始修改前就设了标志位,完成后改回来.其它客户要访问就先判断标志位,看是否可修改.
kwokwinglau
2005-01-19
打赏
举报
回复
樓主可以把要應用到的實例說一下,大家可能有更感性的認識.問題也就容易有正確的解決方法.
bigchinacake
2005-01-19
打赏
举报
回复
在数据库中设置触发器,更新数据时触发,触发器动作就是调用你的那个外部程序
kwokwinglau
2005-01-19
打赏
举报
回复
weill(每天提一问,一天学一点) 提的方法不错啊.
每一台客户端第一次运行就到数据库得到最后修改时间(LastTime)作为界面更新时间(UpdateTime),并使用数据库中的界面方案(UpdateInterface();),每隔一段时间取LastTime与UpdateTime比较:
if(LastTime>Update)
{
UpdateInterface();
UpdateTime=LastTime;
}
客户端在对下面的硬件进行配置后,Update table set LastTime=Now().
fidt982
2005-01-18
打赏
举报
回复
昨天又另外想到了一个问题,当下面的客户端更改数据后然后更改标志位,然后被上面服务器捕获,然后调用相关程序,然后将标志复原 //这样好像基本上没有什么问题
但是下面其它的客户端怎么跟着更新数据了,我总不能为每个客户端设定一个标志位吧,再说我也不知道下面有几台客户端啊??/
??????
weill
2005-01-18
打赏
举报
回复
和和,说过了,你钻进了牛角尖尖。
也就是说,你的思路错了……
我们单位有一个软件公司使用SQL为我们设计的软件,开始的思路也是和你一样。
不过,和和,遗留下的很多问题都让他们大伤脑筋。也就是多台机的并发问题。比如,当一台机器调用了一个记录正要修改,又没有修改的时候,别的机器也在调用它正要改。当A机器提交完修改后,B机器也给他来个修改,结果,A机器改出的结果不是A机器的结果,而是B机器改的结果,并且随之出来的其它的表的统计汇总也让人哭笑不得,哈哈。
完美的解决的方法吗?和和,只有一句话,不过,偶就是不说,偶要看看能不能憋死你,哈哈。
再说一句,你的思路错了……
说了这么多,你应该自个去想了,这不是个技术问题,是个头脑急转弯的问题。
不要等我给你再成的答案……
fidt982
2005-01-17
打赏
举报
回复
在我的服务器这端,要将这个表的信息读到内存中,并且发生改变时,里面的值也要发生改变,触发器不能用
weill(每天提一问,一天学一点)
不知有没有相关文章可以看一下,谢谢了,
quickreport
2005-01-17
打赏
举报
回复
不能用触发器吗?
kwokwinglau
2005-01-17
打赏
举报
回复
暈.原來樓上就是樓主本人."不停地查看標志位",我看可以按你的時間緊迫性決定,可以用定時器.另外還要求"相關程序"是衹可運行一個的.
kwokwinglau
2005-01-17
打赏
举报
回复
樓上的方法不錯啊.用觸發器監視是否修改好了.
weill
2005-01-17
打赏
举报
回复
和和,其实,真正的规范的SQL网络多机编程的思路根本不是楼主所想。
楼主进了牛角了。
fidt982
2005-01-16
打赏
举报
回复
我自己也想到一个办法,不知道可行不可行,
在数据库中在建个表,专门放一个标志字段,当客户端对数据库进行修改操作时,同时修改这个标志位,
在服务器这边,建个一个线程,不停地查看这个标志位,当发现标志位更改时,即调用相关程序,
就是我不知道这样是不是太占资源了一点,也不知道可行不可行,望哪位给个建议
weill
2005-01-16
打赏
举报
回复
提示,可先建立一个结构来存放记录中各个项目的值。
当然,上面的做法是本人所能想到的方法,实现代码可能很长,建议做成函数。而且数据表结构发生变化时,可能较难维护。但本人想不出其它好办法。
weill
2005-01-16
打赏
举报
回复
可用两个ADO来实现。
1、数据库设立标志字段(自动增加型)。
2、定义 ADO1 ADO2
3、ADO1联接数据库,当ADO1将要发生对数据库的存操作时,将ADO1当前指向的记录的内容取出,并把标志字段值取出。
4、ADO2的SQL语句根据标志字段值生成,起动ADO2,据标志字段值取回ADO1指向记录的数据。
5、将ADO1当前记录的内容与ADO2当前的内容进行对比。便可知道数据库里的值是否发生改变。
1小时入门最新小
程序
授权登录注册功能开发,并把注册记录添加到
数据库
使用wx.getUserProfile解决老版本getUserInfo无法获取用户昵称和头像的问题.手把手带你实现微信小
程序
个人
中
心页。 新版微信小
程序
授权登录,退出,缓存,小
程序
个人
中
心的实现 如果把用户授权的信息存入Mysql/云开发的
数据库
,怎么实现呢? 授权登录对于不同的用户好像没有唯一的标识,是不是还得获取openid才行? 授权登录必须从button 点击事件发起吗? 能不能注册的时候,给用户分配一个QQ号功能?
程序
运行正常,
数据库
没反应
程序
运行正常,
数据库
没反应 1、错误1:代码运行正常,后台有响应
值
,就是
数据库
没反应,请检查
数据库
DriverClassName、url、username、password是否和你看的
数据库
一致否! 2、错误2:java代码不报错,控制台有打印的响应
值
,DML操作,
数据库
里的数据没
变化
。但是DQL操作,能把数据查询出来并打印到控制台,并且我在后面还输出一个成功的话语,导致我很懵逼。没办法,苦逼的我...
Mybatis执行sql更新语句,
数据库
表
中
的数据没有
变化
Mybatis执行sql更新语句,但
数据库
表
中
的数据没有
变化
详解
使用事务,
程序
中
sql语句都执行了,但是
数据库
没有
变化
。
刚刚工作不久,基础不是特别扎实,解决问题的能力还可以,直接上手项目,做的过程
中
学的了非常多东西。 题目是最近遇到的一个小问题,虽然小但是不好找原因,为了同样遇到问题的人方便,直接说明可能的原因之一,就是使用了事务,而在sql语句执行之后,没有让事务提交。如果你遇到了同样的问题,那么在执行
数据库
语句后面写上提交事务的语句再执行一次试试,成功的话那么恭喜(另外不是所有的情...
java date的
值
插入到mysql
里面
就
发生
变化
java
程序
里面
代码如下Date date=new Date(); date.setHours(0); date.setMinutes(0); date.setSeconds(0);想凌晨0点时分定时插入数据,数据的日期也是凌晨0点时分才行。可是打开
数据库
时才发现有点差异,java date的
值
应该是2018-07-05 00:00:00,可是在mysql 的数据却变成了2018-07-04...
数据库及相关技术
1,178
社区成员
18,939
社区内容
发帖
与我相关
我的任务
数据库及相关技术
C++ Builder 数据库及相关技术
复制链接
扫一扫
分享
社区描述
C++ Builder 数据库及相关技术
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章