什么是转换.Toint16(c1.selectscalar(str)==0)

本文关键字:str selectscalar c1 转换 Toint16 什么 | 更新日期: 2023-09-27 18:27:31

这是我的代码:

    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)

什么是转换.Toint16(c1.selectscalar(str)==0)

标量调用返回一个离散值。您的selectScalar调用正在执行传递的(可能会受到SQL注入的影响)SQL,并返回值——在本例中是返回的行数。假定此调用的返回值为object,则需要对其进行转换以进行测试,在本例中为ToInt16

简而言之,代码查看行数是否为零,从而意味着用户名和密码不匹配。

使用Convert.ToInt16c1.selectScalar(str_check)的返回值转换为整数,以便将其与0 进行比较

如果你看一下ToInt16的文档,你会发现有很多重载试图将所有类型转换为int16。

Convert.ToInt16将对象转换为整数。

我觉得你应该考虑比较字符串,而不是增加一步将其转换为整数。