2011-07-12 4 views
1

私はこのC#コードで少し苦労しています。基本的には、まず、SQLサーバーのユーザーとパスワードの組み合わせが正しいかどうかを確認し、データベースが存在するかどうかを確認するメカニズムを確認するメカニズムです。私のC# - MySQLの接続が成功したかどうかを確認する方法はありますか?

接続文字列は次のようになります:

connectionString = 
    "database=test;server=localhost;uid=" + usr.Text + ";pwd=" + pwd.Text; 

私が到達しようとしている解決策が見つからない、スローされた例外を確認し、それは間違ったパスワードのことだかどうか言うことができるもの、間違ったユーザーですデータベースなど。私はいくつかの場所でDbConnectionStringBuilderの使用を見てきましたが、私はそれをどのように使うべきかについてはわかりません。

+1

を実行することによって見つけることができますか? –

答えて

6
string connectionString = "database=test;server=localhost;uid=" + usr.Text + ";pwd=" + pwd.Text; 
    using (SqlConnection conn = new SqlConnection(connectionString)) 
    { 
    try 
    { 
     conn.Open(); 
    } 
    catch (SqlException ex) 
    { 
     switch (ex.Number) 
     { 
     case 4060: // Invalid Database 
      .... 
      break; 
     case 18456: // Login Failed 
      .... 
      break; 
     default: 
      .... 
      break; 
     } 
    } 
    } 

SQL Serverの例外番号の完全なリストは、「DBに接続し、どのような例外をキャッチ」するために何が起こった

SELECT * FROM master.dbo.sysmessages 
+0

ありがとうございます、私はこのコードでプログラムをクラッシュさせるほとんどの例外を捕まえることができると思います。これは結局のところ、どんな種類の例外がスローされたのかを特定するための方法です。 – ZShock

1

DbConnection.Open()は、無効な資格情報で失敗します。

+0

データベースが(接続文字列で指定されているように)存在しない場合にも失敗すると思います。したがって、例外を解析して、特定の障害が何であるかを判断します。 – CodingGorilla

+0

@コーディング通常、障害の種類の識別子がいくつかあります。 'SqlException.Number'は' SqlConnection'の場合です。 –

関連する問題