Domanda

Ho questo semplice codice per verificare che un DB è pronto:

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

Non voglio per eseguire una query, solo per controllare la connessione, ma non importa ciò che il tempo fuori parametro viene ignorato. Cerco qui (StackOverflow) e internet e ho trovato nulla su come risolvere questo problema.

Qualsiasi altro ha questo problema? Oppure, ci sono altre idee su come far conoscere l'applicazione che il DB è pronto?

È stato utile?

Soluzione

Mi scuso per il codice differenc ma questo è C # e ho usato in passato. La sua piuttosto semplice e dovrebbe essere leggibile.

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();
    }
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top