增加超时时间

5

我需要增加超时时间。以下是我的代码。

Private Function GetConnectionInstance() As SqlConnection
    Dim objConn As SqlConnection
    Dim strConnection As String
    strConnection = ConfigurationSettings.AppSettings("conn")

    Try
        objConn = New SqlConnection(strConnection)
    Catch ex As Exception
    End Try

    Return objConn
End Function

在上述代码中,我需要添加什么代码来增加超时时间。

另外,可以使用Using代替Try/Catch。如果出现异常或代码结束后,它将关闭您的连接。 - abatishchev
你是指连接数据库的超时时间还是每个查询执行的超时时间? - Guffa
@abatishchev,虽然使用“using”通常是一个好建议,但在这种情况下它不起作用,因为SqlConnection对象从方法中返回。 - Fredrik Mörk
4个回答

7

您需要在连接字符串中添加以下内容:

Connection Timeout=30;

如果您只需要更改目标连接的超时时间,而不是整个应用程序,请按照以下步骤进行操作:

Dim connString as String = ConfigurationSettings.AppSettings("conn")
Dim builder As New SqlConnectionStringBuilder(connString)
builder.ConnectTimeout = 30;
Dim connection = New SqlConnection(builder.ToString())

在.NET 3.5中,似乎SqlConnectionStringBuilder类不再包含Timeout属性。 - eidylon
@eidylon:这个属性的名称是ConnectTimeout。http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnectionstringbuilder.connecttimeout.aspx - abatishchev

6

尝试以下方法:

objConn.ConnectionTimeout = 600

你可以在SqlCommand上设置CommandTimeout,而不是在连接上设置它:

objCmd.CommandTimeout = 600

3
SqlConnection.ConnectionTimeout 是只读属性。参见 http://msdn.microsoft.com/zh-cn/library/system.data.sqlclient.sqlconnection.connectiontimeout.aspx - abatishchev
1
哦,我的错。我想的是可写的SqlCommand.CommandTimeout。 - jrista

1

您可以通过添加“Connection Timeout = 30”来更改连接字符串。默认值为15秒。但是,重要的是要知道超时实际上发生在哪里。您应该查看此主题:连接字符串中未被尊重的超时


0

我发现这个问题的答案实际上不是超时,而是因为 SqlConnection 对象没有在循环中关闭。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接