86

ユーザーが接続文字列を手動で提供するアプリケーションを作成していますが、接続文字列を検証できる方法があるかどうか疑問に思っています。つまり、接続文字列が正しいかどうか、データベースが存在するかどうかを確認します。

4

4 に答える 4

158

接続してみては?迅速な(オフライン)検証のために、おそらくDbConnectionStringBuilderそれを解析するために使用します...

    DbConnectionStringBuilder csb = new DbConnectionStringBuilder();
    csb.ConnectionString = "rubb ish"; // throws

ただし、データベースが存在するかどうかを確認するには、接続を試みる必要があります。もちろん、プロバイダーを知っている場合は最も簡単です。

    using(SqlConnection conn = new SqlConnection(cs)) {
        conn.Open(); // throws if invalid
    }

プロバイダを(実行時に)文字列としてしか知らない場合は、次を使用しますDbProviderFactories

    string provider = "System.Data.SqlClient"; // for example
    DbProviderFactory factory = DbProviderFactories.GetFactory(provider);
    using(DbConnection conn = factory.CreateConnection()) {
        conn.ConnectionString = cs;
        conn.Open();
    }
于 2009-01-12T09:10:14.000 に答える
16

これを試して。

    try 
    {
        using(var connection = new OleDbConnection(connectionString)) {
        connection.Open();
        return true;
        }
    } 
    catch {
    return false;
    }
于 2014-03-28T09:11:10.203 に答える
7

目標が存在ではなく有効性である場合、次のようにします。

try
{
    var conn = new SqlConnection(TxtConnection.Text);
}
catch (Exception)
{
    return false;
}
return true;
于 2015-10-21T15:04:12.180 に答える