2016-07-14 56 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

是的,当我使用你的方法时,让我说明究竟发生了什么。 –

相关问题