سؤال
لدي هذا الرمز البسيط لاختبار أن ديسيبل جاهز:
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
لا أريد تنفيذ استعلام ، فقط للتحقق من الاتصال ، ولكن بغض النظر عن المعلمة التي يتم تجاهلها للوقت. أنا أبحث هنا (Stackoverflow) والإنترنت ولم أجد شيئًا في كيفية إصلاح هذا.
أي شخص آخر يكون لهذه المشكلة؟ أو ، هل هناك أي أفكار أخرى حول كيفية إخبار التطبيق بأن DB جاهز؟
المحلول
أقوم بتوزيع الاختلاف على الكود ، لكن هذا 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();
}
}
لا تنتمي إلى StackOverflow