Foxtable(狐表)用户栏目专家坐堂 → 关于数据库实时更新问题


  共有3016人关注过本帖平板打印复制链接

主题:关于数据库实时更新问题

帅哥哟,离线,有人找我吗?
eha_he
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:22 积分:316 威望:0 精华:0 注册:2018/11/6 9:27:00
关于数据库实时更新问题  发帖心情 Post By:2021/1/4 12:37:00 [只看该作者]

你好:咨询下问题出来哪里。
我是高级开发版开发的程序,设置了服务器端口和客户端。逻辑是客户端某行有修改,就通知服务器,服务器再通知在线的所有人该行有修改,经常会弹出错误。
在服务器的OPENQQ服务端,ReceivedMessage程序如下
If msg.StartsWith("&#") AndAlso msg.EndsWith("#&") Then '通知所有在线客户该表对于的数据需要重新加载    '格式是 &#表名:_Identify#&
    For Each User As QQUser In QQserver.Users    
        QQServer.Send(User.Name,msg)        
    Next
End If
在客户端的OPENQQ客户端,ReceivedMessage程序如下
Dim msg As String = e.Message
If  msg.StartsWith("&#") AndAlso msg.EndsWith("#&") Then '该行数据要加载到系统中
    Dim Key As String = msg.SubString(2,msg.Length - 4)
    Dim pts() As String = Key.Split(":")
    If pts.Length = 3 Then
        Dim dr As DataRow = DataTables(pts(1)).Find("[_Identify] = " & pts(2))
        If dr IsNot Nothing  Then
            dr.Load(False) '重新加载此行
     '       PopMessage(pts(0) & "修改了表:" & pts(1) & pts(2) & "的数据","提示", PopIconEnum.Infomation, 5)  
        Else
            DataTables(pts(1)).AppendLoad("[_Identify] = " &  pts(2)) '追载新增加的行
       '     PopMessage(pts(0) & "增加了表:" & pts(1) & pts(2) & "的数据","提示", PopIconEnum.Infomation, 5)    
        End If
    End If
End If

而某人修改了一行数据,会发信息给服务器。程序如下:
Dim Key As String
key = _UserName & ":" & "资金往来对账流水表" & ":" & dr("_Identify")
QQClient.Send("&#" & key & "#&")  '通知其他人这行有修改

会不会是因为服务器同事通知所有在线的人要更新该行导致?大概是十多个人同时使用。非常感谢
图片如下:  ---   数据库被用户锁定,不能打开。
图片点击可在新窗口打开查看

 回到顶部