con.Open()之前测试数据库连接正常

时间:2012-10-26 03:44:57

标签: c# sql database sql-server-ce

我为我的应用创建了一个通用的数据库处理程序类。

我正在使用本地数据库,因此这里使用了SqlCeConnection类。

我想做的是测试连接字符串是否有效,因此在执行connection.Open();

之前更新连接状态给用户

让我们说

 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();

我在考虑编写一种尝试open然后close连接的方法,我是否正确地想到这一点,或者是否有更好的方法。

2 个答案:

答案 0 :(得分:6)

测试连接会增加额外的开销。为什么不直接打开连接并将代码放在Try-Catch

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

答案 1 :(得分:3)

您可以将DbConnectionStringBuilder与属性ConnectionString一起使用,如果connection string is not correct format它会抛出异常:

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

通过这种方式,您无需真正打开与数据库的连接。