2010-06-10 77 views
1

我有这个简单的代码来测试一个DB已准备就绪:超时在SQL连接不工作

Function testlocalcon() As Boolean 
    Dim constr As String = _clconstr 

    Try 
     Using t As New SqlConnection() 
      constr = constr & " ; Connect Timeout=1" 

      If Not t.State = Data.ConnectionState.Open Then 
       t.ConnectionString = constr 

       t.Open() 
       If t.State = Data.ConnectionState.Open Then 
        Return True 
       Else 
        Return False 
       End If 
      Else 
       Return True 
      End If 
     End Using 
    Catch ex As Exception 
     Return False 
    End Try 
End Function 

我不想执行查询时,只检查连接,但无论什么时候out参数被忽略。我在这里搜索(Stackoverflow)和互联网,并没有发现如何解决这个问题。

其他任何人都有这个问题?或者,有没有关于如何让应用程序知道数据库已准备好的其他想法?

+0

您试图设置连接超时或命令超时吗?他们是两件不同的事情。 – Barry 2010-06-10 17:39:51

回答

0

我为代码差异appologize,但这是C#,我已经在过去使用它。它非常简单,应该可读。

private SQLServerConnection 
private SqlConnection _SQLServerConnection; 
public SqlConnection SQLServerConnection 
    { 
     get 
     { 
      return _SQLServerConnection; 
     } 
     set 
     { 
      _SQLServerConnection = value; 
     } 
    } 

private void SetSQLServerConnectionString (string sqlServerName, string databaseName, string saPassword, int connectTimeout) 
{ 
    SQLServerConnection = new SqlConnection("Password=" + saPassword + ";Persist Security Info=True;User ID=sa;Initial Catalog=" + databaseName + ";Data Source=" + sqlServerName + ";connection timeout=" + connectTimeout.ToString(CultureInfo.InvariantCulture)); 
} 

internal bool TestSQLServerConnection(string sqlServerName, string databaseName, string saPassword, int connectTimeout) 
{ 
    try 
    { 
     SetSQLServerConnectionString(sqlServerName, databaseName, saPassword, connectTimeout); 
     SQLServerConnection.Open(); 
     return true; 
    } 
    catch (SqlException e) 
    { 

     return false; 
    } 
    finally 
    { 
     SQLServerConnection.Close(); 
    } 
} 
+1

嘿约翰谢谢,但你的代码是完全一样的,它不工作,它只是忽略超时值... 我也复制你的代码并使用它,但超时参数被忽略.. 任何其他thougts? – carlos 2010-06-10 03:43:57

+0

我不同意我一直在使用此代码安装程序来验证服务器是否存在,并且它工作得很好。 – 2010-06-10 03:51:35

+0

只是要问......如果您只是检查服务器是否可用,为什么还要担心超时? – 2010-06-10 03:53:32