Test Database Connection is OK before con.Open()

19,325

Solution 1

testing for connectivity adds extra overhead. why not directly open connection and put the code inside Try-Catch

try
{
    conn.Open();
}
catch(SqlCeException ex)
{
    // output the error to see what's going on
    MessageBox.Show(ex.Message); 
}

Solution 2

You can use DbConnectionStringBuilder with property ConnectionString, it will throw exception if connection string is not correct format:

public static class Extension
{
    public static void TestConnection(this DbConnection connection)
    {
        var builder = new DbConnectionStringBuilder
            {
                ConnectionString = connection.ConnectionString
            };
    }
}

With this way you don't need to really open connection to database.

Share:
19,325
IEnumerable
Author by

IEnumerable

PHP Web developer with some experience in C#, WinForms and ASP.NET. Currently using PyroCMS and codeignighter Languages (PHP, Codeignighter, C#, ASP, CSS3, HTML5 and Javascript, Silverlight)

Updated on June 25, 2022

Comments

  • IEnumerable
    IEnumerable almost 2 years

    I have created a generic Database handler class for my app.

    Im using a local database so SqlCeConnection class is being used here.

    What I would like to do is test that the Connection string is valid, so update the connection status to the user before I execute connection.Open();

    lets say

     SqlCeConnection conn = new SqlCeConnection(connectionString);
    
     //so far we have only created the connection, but not tried to open it
     //Would be nice to update the UI to say that conn is OK
     conn.testConnection();
    
     conn.Open();
    

    I was thinking of writing a method that attempts to open then close the connection, am I right in thinking this or is there a better way.