***VB6开发局域网sqlserver7.0数据库程序的小问题,高手请进××××××××××××××

时间:2021-10-19 07:59:23
我使用sqlserver7.0做一个局域网的数据库程序,开发工具vb6.0

问题是:
当一台客户机上运行的程序对数据库进行了增删改的操作

在主机上运行的程序怎么能马上知道这一变化

我原来用winsock通知主机

但后来觉得不好,有没有好方法啊

谢谢
 

 

45 个解决方案

#1


在數據庫中增加一
user_log表.
存放
用戶名和機器ip,操作時間,操作事件等信息.
在每條SQL語句後追加一句insert該表的SQL語句/

然後用winsock通知主机去
user_log中重新檢索.

個人意見,僅供參考.

#2


怎么不用ADO啊????

#3


fsb_12345(myself)

ado怎么处理啊

#4


up

#5


ADO 可以得到動態的紀錄據.
請使用ADO.

#6


zeng_zhh(紫河) 

能说具体点吗

#7


刷新不行吗,定时刷新
ado本身也支持也支持该特性。

#8


触发器

#9


我手里的软件就是这样的。但客户端数据库更改后。要立刻发送到服务器上。

#10


发送到什么样的服务器?需要提供什么样的消息呢?如果可以是触发器是最好的方法了。

#11


lzy5042(老山) 
是怎么实现的

我的程序大概是这样的

客户端能够修改数据库中的某些表,服务器端的程序在客户端修改记录后要立刻显示

我希望的是服务器端作一个监控的程序,当客户端修改数据库时,服务器端刷新,而不是时时刷新

有什么好办法

谢谢

#12


简言之
假设这个程序是用于登记客人访问记录的

在客户端,客人来访时在这里登记,于是就修改了数据库中的某个表

服务器端显示的是所有来访的记录,当客户端修改了记录,服务器端要同步显示那个已修改的表

但最后不是定时刷新,这样系统资源消耗太大

就是这个意思

#13


我的程序正在修改中。我这里是手工发送的。只是加上一个临时的数据库用来进行判断有无新的数据。程序只发送新的数据。
你那个可否这样(说的不对可不要用板砖打我:))
因为客户修改程序后必须进行确认才能将数据存入数据库中。就再那个保存或更新按钮中加上校验河发送的代码!!

#14


我做过一个开发自用的小程序,大概的意思是有开发人员和调试人员,调试人员可能要经常调试出来一些问题,这时可以设定开关是否在调出问题后通知开发人员,这个过程应该是和你的要求一样的,但我是用Winsock做的,除了通知开发人员之外,还可以互相对话,也是需要数据库支持。

#15


up

#16


up

#17


我想请教一下:你是怎么在客户端实现对数据库的修改的。用winsocket 还是 remotedata 控件
能告之大概实现方法吗。

#18


ado

#19


不就是一个简单的C/S程序吗,使用Winsock创建一个服务器程序,客户端程序修改数据库后使用SendData通知服务器程序(应该包含客户端修改数据的一些信息,如:ID号等),服务器程序根据客户端的信息查询数据库显示不就行了

#20


感谢hydnoahark 。多谢指点!

#21


有那么费劲吗?把ADO的Recordset的CursorType改成Dynamic,
就可以看到其他用户对记录的增删,
如果要提示,那么可以在WillchangeRecord事件中写代码。

#22


你是0451的mail,哈尔滨的吗?

#23


我是不想用winsock

不知 bisc_sunny(中子)有没有成功的代码

我试过但不太好用

#24


你说的就是要三层结构。本来直接也可以这样做的。你的情况那就是要作一个服务程序专门处理数据库的访问,最好的方式使用DCOM,当然直接使用RPC和SOCKET也可以,就是作一个中间层管理一切对数据库的访问,不管有多少客户端,我曾经参与一个使用RPC的这样的项目,就是有一个服务处理数据库的访问,一个服务处理平衡负载,当然现在使用COM+是一个好的想法。三层架构的出现就是在开发中得到两层结构有很多方面的不足,所以一个中间层必须要有的啦,这样才可以是自己控制的更多。

#25


COM+中的订阅是一个非常不错的功能,灵活使用可以做到动态的更新(我使用了客户查询缓冲,没有使用临时订阅)

#26


Use Events CallBack when the record change!

#27


ado

#28


对,用COM+可以的,或是使用触发器。

#29


对不起啊,我对com不是太了解

有没有其他办法

#30


gz

#31


pushup

#32


up

#33


up

#34


我也想知道这个问题怎么解决,能不能将具体的方法讲一下啊!帮帮我们这些菜鸟好吗?

#35


数据库监控程序编写最好不要用winsock控件,你的客户端的程序应时刻判断服务器中的数据是否被修改过,而不是等待服务器发过来的信息。
要使服务器端的程序在客户端修改记录后要立刻显示,最好的方法莫过于sql server数据库端的
触发器和存储过程、数据表的协同工作。
基本算法:
可以先建一个新表(一个字段),表示你的数据库内容是否被更改过。然后

#36


then what?

#37


!

#38


up

#39


push

#40


高手????

#41


你要做的是临视SQL数据库的程序,还是做个中间组件(COM+)??
试监视SQL的端口看看

#42


up

#43


我是用TimeStamp字段判断

#44


具体一点好吗

Brunhild() 

#45


如果你的客户机程序是对sqlserver直接操作而中间层只是对数据库进行监视的话,那么在sqlserver上做一个触发器是最好的-----有了改变立时激发该触发器;
如果你的客户机程序是将数据发送到中间层,而由中间层来对数据库操作的话,你的问题就不成问题了  :)

#1


在數據庫中增加一
user_log表.
存放
用戶名和機器ip,操作時間,操作事件等信息.
在每條SQL語句後追加一句insert該表的SQL語句/

然後用winsock通知主机去
user_log中重新檢索.

個人意見,僅供參考.

#2


怎么不用ADO啊????

#3


fsb_12345(myself)

ado怎么处理啊

#4


up

#5


ADO 可以得到動態的紀錄據.
請使用ADO.

#6


zeng_zhh(紫河) 

能说具体点吗

#7


刷新不行吗,定时刷新
ado本身也支持也支持该特性。

#8


触发器

#9


我手里的软件就是这样的。但客户端数据库更改后。要立刻发送到服务器上。

#10


发送到什么样的服务器?需要提供什么样的消息呢?如果可以是触发器是最好的方法了。

#11


lzy5042(老山) 
是怎么实现的

我的程序大概是这样的

客户端能够修改数据库中的某些表,服务器端的程序在客户端修改记录后要立刻显示

我希望的是服务器端作一个监控的程序,当客户端修改数据库时,服务器端刷新,而不是时时刷新

有什么好办法

谢谢

#12


简言之
假设这个程序是用于登记客人访问记录的

在客户端,客人来访时在这里登记,于是就修改了数据库中的某个表

服务器端显示的是所有来访的记录,当客户端修改了记录,服务器端要同步显示那个已修改的表

但最后不是定时刷新,这样系统资源消耗太大

就是这个意思

#13


我的程序正在修改中。我这里是手工发送的。只是加上一个临时的数据库用来进行判断有无新的数据。程序只发送新的数据。
你那个可否这样(说的不对可不要用板砖打我:))
因为客户修改程序后必须进行确认才能将数据存入数据库中。就再那个保存或更新按钮中加上校验河发送的代码!!

#14


我做过一个开发自用的小程序,大概的意思是有开发人员和调试人员,调试人员可能要经常调试出来一些问题,这时可以设定开关是否在调出问题后通知开发人员,这个过程应该是和你的要求一样的,但我是用Winsock做的,除了通知开发人员之外,还可以互相对话,也是需要数据库支持。

#15


up

#16


up

#17


我想请教一下:你是怎么在客户端实现对数据库的修改的。用winsocket 还是 remotedata 控件
能告之大概实现方法吗。

#18


ado

#19


不就是一个简单的C/S程序吗,使用Winsock创建一个服务器程序,客户端程序修改数据库后使用SendData通知服务器程序(应该包含客户端修改数据的一些信息,如:ID号等),服务器程序根据客户端的信息查询数据库显示不就行了

#20


感谢hydnoahark 。多谢指点!

#21


有那么费劲吗?把ADO的Recordset的CursorType改成Dynamic,
就可以看到其他用户对记录的增删,
如果要提示,那么可以在WillchangeRecord事件中写代码。

#22


你是0451的mail,哈尔滨的吗?

#23


我是不想用winsock

不知 bisc_sunny(中子)有没有成功的代码

我试过但不太好用

#24


你说的就是要三层结构。本来直接也可以这样做的。你的情况那就是要作一个服务程序专门处理数据库的访问,最好的方式使用DCOM,当然直接使用RPC和SOCKET也可以,就是作一个中间层管理一切对数据库的访问,不管有多少客户端,我曾经参与一个使用RPC的这样的项目,就是有一个服务处理数据库的访问,一个服务处理平衡负载,当然现在使用COM+是一个好的想法。三层架构的出现就是在开发中得到两层结构有很多方面的不足,所以一个中间层必须要有的啦,这样才可以是自己控制的更多。

#25


COM+中的订阅是一个非常不错的功能,灵活使用可以做到动态的更新(我使用了客户查询缓冲,没有使用临时订阅)

#26


Use Events CallBack when the record change!

#27


ado

#28


对,用COM+可以的,或是使用触发器。

#29


对不起啊,我对com不是太了解

有没有其他办法

#30


gz

#31


pushup

#32


up

#33


up

#34


我也想知道这个问题怎么解决,能不能将具体的方法讲一下啊!帮帮我们这些菜鸟好吗?

#35


数据库监控程序编写最好不要用winsock控件,你的客户端的程序应时刻判断服务器中的数据是否被修改过,而不是等待服务器发过来的信息。
要使服务器端的程序在客户端修改记录后要立刻显示,最好的方法莫过于sql server数据库端的
触发器和存储过程、数据表的协同工作。
基本算法:
可以先建一个新表(一个字段),表示你的数据库内容是否被更改过。然后

#36


then what?

#37


!

#38


up

#39


push

#40


高手????

#41


你要做的是临视SQL数据库的程序,还是做个中间组件(COM+)??
试监视SQL的端口看看

#42


up

#43


我是用TimeStamp字段判断

#44


具体一点好吗

Brunhild() 

#45


如果你的客户机程序是对sqlserver直接操作而中间层只是对数据库进行监视的话,那么在sqlserver上做一个触发器是最好的-----有了改变立时激发该触发器;
如果你的客户机程序是将数据发送到中间层,而由中间层来对数据库操作的话,你的问题就不成问题了  :)