这是我的代码:
string str_check;
str_check = "select count(*) from tbl_AdminLogin
where AdminId='" + txt_admin.Text + "' and Password='"
+ txt_pswd.Text + "'";
if (Convert.ToInt16(c1.selectScalar(str_check)) == 0)
{
lbl_errmsg.Text = "Invalid Admin";
}
else
{
Session.Add("adminid", txt_admin.Text);
Response.Redirect("AdminHome.aspx");
}
///THIS IS THE WHOLE PROJECT CS//
这条线做什么? :
if(Convert.ToInt16(c1.selectScalar(str_check)) == 0)
答案 0 :(得分:1)
标量调用返回一个谨慎的值。您的selectScalar
调用正在执行传递(易受SQL注入,我可能会添加)SQL,并返回值 - 在这种情况下返回的行数。鉴于此调用的返回值为object
,需要将其转换为要测试的,在本例中为ToInt16
。
简而言之,代码会查看行数是否为零,从而暗示用户名和密码不匹配。
答案 1 :(得分:0)
您使用Convert.ToInt16
将c1.selectScalar(str_check)
的返回值转换为整数,以便将其与0
进行比较
如果您查看ToInt16的文档,您会发现有很多重载尝试将各种类型转换为int16。
答案 2 :(得分:0)
Convert.ToInt16会将对象转换为整数。
我觉得你应该考虑比较字符串而不是增加一个步骤来将其转换为整数。