2016-07-14 64 views
-2

「發生類型'System.Data.SqlClient.SqlException'未處理的異常在System.Data.dll中」我怎麼會出現錯誤「System.Data.dll中發生類型'System.Data.SqlClient.SqlException'的未處理的異常」

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

+0

讀書 - 和作用 - 在錯誤的附加信息。 – stuartd

+0

你有沒有試過閱讀錯誤信息?在我這樣做之後,我查看了你的SQL查詢,我可以看到你所做的錯誤。如果你看,我相信你會看到它。它甚至會告訴你具體到哪裏看。 – user1666620

+0

有兩件事,總是使用sql-parameters而不是字符串連接來防止sql注入。在你的sql查詢中,你忘記了添加一個'WHERE'。這將是:'SELECT COUNT(*)FROM登錄WHERE用戶名= @用戶名和密碼= @密碼'。如果您使用'SqlDataAdapter',您可以通過'LoginConnect.SelectCommand.Parameters'添加參數。 –

回答

0

兩件事情

  1. 一直使用的,而不是字符串連接SQL參數,以防止SQL注入
  2. 在SQL查詢,你已經忘記了添加WHERE

如果使用SqlDataAdapter您可以通過添加adapter.SelectCommand.Parameters參數:

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

是的,當我使用你的方法時,讓我說明究竟發生了什麼。 –

相關問題