以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  SQL的连接多路选择  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=92714)

--  作者:yang1972
--  发布时间:2016/11/10 21:58:00
--  SQL的连接多路选择
版主好:我用SQL 数据库作数据源,连接数据库服务器工作的 有  外网和局域网电脑,FOXTABLE 怎样设置,自动检测与数据库连接速度,然后用户选择最快的连接方式。进行登陆工作。

是打开项目时先打开一个选择连接发式的窗口,窗口能够自动检测连接数据库的速度。
(ttp://www.foxtable.com/webhelp/scr/0682.htm)这个链接打不开。



--  作者:有点蓝
--  发布时间:2016/11/10 22:00:00
--  
http://www.foxtable.com/webhelp/scr/0682.htm
--  作者:yang1972
--  发布时间:2016/11/10 22:49:00
--  

我使用这个方案:如果第二个IP还不行,能不能再设置第三个IP?


假定有两个IP地址(也可能是两个服务器),分别是192.168.1.100和119.75.217.56,默认使用第一个IP地址,如果第一个IP地址无法接通,则自动切换到第二个IP地址。
要实现这个功能很简单,首先在设置数据源的时候,使用第一个IP地址(192.168.1.100)设置,然后在BeforeConnectOuterDataSource事件中设置如下代码:

If e.Name = "数据源名称" Then
    If Network.Ping("192.168.1.100",1000) = False  Then \'如果第一个IP无法接通
        e.ConnectionString = e.ConnectionString.Replace("192.168.1.100""119.75.217.56"
    End If

End
 If


--  作者:有点蓝
--  发布时间:2016/11/10 22:53:00
--  
多少个都可以,循环所有ip,逐一判断
--  作者:yang1972
--  发布时间:2016/11/11 7:10:00
--  
怎么循环所有ip,代码怎么写啊,帮我写个好吗?谢谢
--  作者:有点蓝
--  发布时间:2016/11/11 8:37:00
--  
If e.Name = "数据源名称" Then
    Dim ips() As String = { "192.168.0.1","192.168.0.2","192.168.0.3" }
    For Each ip As String In ips
        If Network.Ping(ip,1000) Then \'如果IP接通
            e.ConnectionString = e.ConnectionString.Replace("192.168.1.100", ip)
            Exit For
        End If
    Next
End If

--  作者:yang1972
--  发布时间:2016/11/11 10:27:00
--  
If e.Name = "spxt-001" Then
    Dim ips() As String = { "218.22.183.172,3433","173.31.216.67,3433","192.168.1.21,3433" }
    For Each ip As String In ips
        If Network.Ping(ip,1000) Then \'如果IP接通
            e.ConnectionString = e.ConnectionString.Replace("192.168.1.21,3433", ip)
            Exit For
        End If
    Next
End If

我这个有什么错误吗,系统打不开

--  作者:有点蓝
--  发布时间:2016/11/11 10:36:00
--  
If e.Name = "spxt-001" Then
    Dim ips() As String = { "218.22.183.172","173.31.216.67","192.168.1.21" }
    For Each ip As String In ips
        If Network.Ping(ip) Then \'如果IP接通
            e.ConnectionString = e.ConnectionString.Replace("192.168.1.21", ip)
            Exit For
        End If
    Next
End If

--  作者:yang1972
--  发布时间:2016/11/11 10:56:00
--  
不行啊,数据源设置的IP未能连接时 ,代码未起到作用检测自动更换作用,连接不到数据库
图片点击可在新窗口打开查看此主题相关图片如下:qq图片20161111105430.png
图片点击可在新窗口打开查看

--  作者:有点蓝
--  发布时间:2016/11/11 11:29:00
--  
测试没有问题。

更改后,在9楼图片的数据源管理里看到的仍然还是旧的数据源设置,但是实际连接的是新的数据源了

所以要保证不同数据库的表结构是一致的