2012-10-04 34 views
1

我有以下方法来确保输入的用户名不存在。验证方法错误

protected void checkUsername(object source, ServerValidateEventArgs args) 
{ 
    string connString = "Data Source=server;Initial Catalog=database;User Id=username;Password=password;"; 
    string cmdText = "SELECT COUNT(*) FROM igs_users WHERE username = @username"; 

    using(SqlConnection conn = new SqlConnection(connString)) 
    { 
     conn.Open(); 
     using(SqlCommand cmd = new SqlCommand(cmdText, conn)) 
     { 
      cmd.Parameters.AddWithValue("@username", username); 
      Int32 count = (Int32)cmd.ExecuteScalar(); 

      args.IsValid = true; 
     } 
    } 
} 

当我运行它时,出现以下错误。

System.ArgumentException是由用户代码 的HResult = -2147024809 消息=没有映射从对象类型System.Web.UI.WebControls.TextBox到已知的托管提供天然存在型未处理。 来源= System.Data

调试器给我这个错误的下面一行。

Int32 count = (Int32)cmd.ExecuteScalar(); 

任何想法这个代码有什么问题吗?

回答

4

我会认为这是行

cmd.Parameters.AddWithValue("@username", username); 

username一个TextBox?如果是这样,你应该改变行:

cmd.Parameters.AddWithValue("@username", username.Text); 

,因为它目前为绑定的TextBox控件本身的@username参数尝试线。更正将文本框控件中的文本绑定到@username

+0

就是这样。谢谢。 Jeez,这样一个简单的解决方法。 – Trido

+1

我希望我能说我从来没有做过这样的事情,但我有。 :-) – wintermute