2016-08-14 19 views
0

私はC#windowsフォームを作成していますので、終了をクリックすると閉じますあなたはログインをクリックすると ウィンドウ、そして、私はエラーを取得:「System.Data.SqlClient.SqlException」の未処理の例外がSystem.Data.dllで発生しました。詳細については、ユーザー 'sa'のログインに失敗しました

private void button1_Click(object sender, EventArgs e) 
{ 
    SqlConnection con = new SqlConnection(@"Data Source=PC;Initial Catalog=STATFRET;User ID=sa;Password=***********"); 

    SqlDataAdapter sda = new SqlDataAdapter("Select count(*) from db.UTILISATEURS where mat_utl='" + User_txt + "' and psw_utl='" + Pwd_txt + "'",con); 

    DataTable dt = new DataTable(); 
    sda.Fill(dt); 

    if (dt.Rows[0][0].ToString() == "1") 
    { 
      this.Hide(); 
      Something s = new Something(); 
      s.Show(); 
    } 
    else 
    { 
      MessageBox.Show("Veuillez remplir les cases"); 
    } 

    try 
    { 
    } 
    catch(Exception ex) 
    { 
     MessageBox.Show(ex.Message); 
    } 
} 

An unhandled exception of type 'System.Data.SqlClient.SqlException' occurred in System.Data.dll

それはラインここ

sda.Fill(dt); 

上のエラーをスローすることは私のコードです

+2

あなたの認証情報は間違っています。 –

+2

[SQLインジェクションアラート](http://msdn.microsoft.com/en-us/library/ms161953%28v=sql.105%29.aspx) - SQLステートメントを連結しない** ** ** SQLインジェクションを避けるための代わりに**パラメータ化されたクエリ –

答えて

0

タイトルとして使用したメッセージが返された場合、私には接続文字列のエラーのように見えます。あなたの資格情報をチェックしましたか?おそらく、SQL Server Management Studioを使用してこの資格情報に接続し、目的のデータベースを開き、select allを実行しようとします。

Fill()を呼び出すときにこのエラーが発生する理由は、これまで接続が開かれていなかったからです。おそらく、データテーブル上でFill()を呼び出す前に、接続を開こうとすることができます。

conn.Open(); 

正しく接続を使用するためのもう一つのヒント:

を、それが正しく配置されますように、usingステートメントにそれを入れてください。

関連する問題