我需要用户在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的新手!!提前致谢
答案 0 :(得分:1)
我可以想象在Convert.ToBoolean中,1和-1都解析为true。如果找不到用户名,请尝试返回0而不是-1,或者在后面的代码中检查大于或小于0而不是转换为布尔值。