以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  关于Connections.TryConnect这个问题!  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=179911)

--  作者:benben325
--  发布时间:2022/9/17 10:01:00
--  关于Connections.TryConnect这个问题!
一旦数据源连不上,这个检测连接要花好久,一直处于卡死状态。。。其实一般3秒都没连上 基本上就连不上了,有什么方法可以快速判断连接状态? 或者3秒没连上 我直接判断为连接失败!
--  作者:z769036165
--  发布时间:2022/9/17 10:03:00
--  
http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&Id=62475
参考这个吧

--  作者:benben325
--  发布时间:2022/9/17 10:37:00
--  
这个帖子我看过,我只需要判断数据源是否连接,因此引用了如下代码:

Dim str As String = "Provider=SQLOLEDB.1;Password=" & r("密码") & ";Persist Security Info=True;User ID=" & r("用户名") & ";Initial Catalog=master;Data Source=" & r("服务器")

Dim mess As String = "数据源连接成功!"
Try
    Dim conn As ADODB.Connection
    conn = New ADODB.Connection
    conn.ConnectionString = str
    conn.Open
    conn.close
Catch ex As Exception
    mess = "SQL数据库" & Err.Description
End Try
MessageBox.Show(mess)

可是这部分代码发现时间仍然需要很久!

--  作者:有点蓝
--  发布时间:2022/9/17 10:42:00
--  
conn = New ADODB.Connection
conn.ConnectionTimeout=3

--  作者:benben325
--  发布时间:2022/9/17 10:47:00
--  
老师,不行额。
Dim str As String = "Provider=SQLOLEDB.1;Password=" & r("密码") & ";Persist Security Info=True;User ID=" & r("用户名") & ";Initial Catalog=master;Data Source=" & r("服务器")

Dim mess As String = "数据源连接成功!"
Try
    Dim conn As ADODB.Connection
    conn = New ADODB.Connection
    conn.ConnectionTimeout=3
    conn.ConnectionString = str
    conn.Open
    conn.close
Catch ex As Exception
    mess = "SQL数据库" & Err.Description
End Try
MessageBox.Show(mess)

改成这样仍旧花了一分钟左右

--  作者:有点蓝
--  发布时间:2022/9/17 11:34:00
--  
ip可以访问的情况下,ConnectionTimeout才有效。先判断IP是否可用,2楼的贴估计也没有怎么仔细看

If Network.Ping("192.192.192.192", 1) Then
    Dim str As String = "Password=888;Persist Security Info=True;User ID=sa;Initial Catalog=abc;Data Source=192.192.192.192;Connection Timeout=1"
    
    Dim mess As String = "数据源连接成功!"
    Try
        Dim conn As New system.Data.SqlClient.SqlConnection
        conn.ConnectionString = str
        conn.Open
        conn.close
    Catch ex As Exception
        mess = "SQL数据库" & Err.Description
    End Try
    MessageBox.Show(mess)
Else
    Messagebox.Show("该服务器不可用") 
End If