2016-07-14 19 views
-2

"' System.Data.SqlClient.SqlException '型の未処理の例外が発生しましたどうすればエラーが発生するのですか? "System.Data.SqlClient.SqlException '型の未処理の例外がSystem.Data.dllで発生しました"

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

+0

読むことによって - とに作用する - エラーに追加情報。 – stuartd

+0

エラーメッセージを読もうとしましたか?私がそうした後、私はあなたのSQLクエリを見て、あなたがしたエラーを見ることができます。もしあなたが見てもそれを見ることができると確信しています。それは、どこを見るかを具体的に指示します。 – user1666620

+0

SQLインジェクションを防ぐために、文字列連結の代わりに常にsql-parametersを使用します。あなたのSQLクエリでは、WHEREを追加するのを忘れてしまいました。それは: 'ログインユーザー名= @ユーザー名とパスワード= @パスワード 'からのSELECT COUNT(*)です。 'SqlDataAdapter'を使用する場合は、' LoginConnect.SelectCommand.Parameters'を介してパラメータを追加できます –

答えて

0

「のSystem.Data.dllで

  1. 2つのことは常にあなたが追加し忘れていた自分のSQLクエリでは、SQLインジェクション
  2. を防ぐために、SQLパラメータの代わりに、文字列の連結を使用しますWHERE

あなたはadapter.SelectCommand.Parameters経由でパラメータを追加することができSqlDataAdapterを使用する場合:

string sql = @"SELECT COUNT(*) FROM Login 
       WHERE Username = @UserName AND Password = @Password"; 
using(var LoginConnect = new SqlDataAdapter(sql, LoginConnection)) 
{ 
    var selectParameters = LoginConnect.SelectCommand.Parameters; 
    selectParameters.Add("@UserName", SqlDbType.VarChar).Value = txtUsername.Text; 
    selectParameters.Add("@Password", SqlDbType.VarChar).Value = txtPassword.Text; 
    LoginConnect.Fill(dt); 
} 
+0

私はそれを試しても、私にも同じエラーが表示されます –

+0

変更されたSQLクエリでパラメータアプローチを使用しましたか? –

+0

はい、私はあなたの方法を使うときに何が起こるのかを教えてください。 –

関連する問題