用于检查asp.net中是否存在用户名的存储过程

时间:2015-02-03 11:46:24

标签: asp.net database stored-procedures

我需要用户在asp.net的网络表单中输入用户名。当用户输入并单击按钮时,如果特定数据库中存在用户名,则需要显示标签。我已经尝试执行存储过程,但它总是显示消息“找到用户名”,虽然我已经给出了不在该数据库中的用户名。

这是我的存储过程

 CREATE PROCEDURE [dbo].[spCheckUsernameForAnswer]
  @userName varchar(20)
  as
  begin
  Declare @count int
       select @count=COUNT(username) from UpdatedAnswer where [username] =@userName 
   if(@count=1)
    Begin
    Select 1 as ReturnCode
    End
      Else
         Begin
         Select -1 as Returncode
        End
  End
  GO

下面是我的代码隐藏文件,它在点击按钮

时执行
        string cs = ConfigurationManager.ConnectionStrings["DBCS"].ConnectionString;
        using (SqlConnection con = new SqlConnection(cs))
        {
            SqlCommand cmd = new SqlCommand("spCheckUsernameForAnswer", con);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlParameter parausername = new SqlParameter("@username", GetUsername.Text);
            cmd.Parameters.Add(parausername);
            con.Open();
            SqlDataReader rdr = cmd.ExecuteReader();
            while (rdr.Read())
            {
                if (Convert.ToBoolean(rdr["ReturnCode"]))
                {
                    ErrorUserLabel.Text = "Username found";

                }
                else
                {
                    ErrorUserLabel.Text = "not found";
                }
            }

        }

我可以猜测问题存在于此代码背后,但我不知道如何解决它。!!请帮助我成为.net的新手!!提前致谢

1 个答案:

答案 0 :(得分:1)

我可以想象在Convert.ToBoolean中,1和-1都解析为true。如果找不到用户名,请尝试返回0而不是-1,或者在后面的代码中检查大于或小于0而不是转换为布尔值。