2 p 160717 p_160717 于 2016.02.17 23:59 提问

[ASP.NET]菜鸡求指导,我这个登录验证就是通不过注册信息倒是能写入数据库

这是我的部分代码片段

//登录按钮触发的事件函数
 protected void button1_Click(object sender, EventArgs e)
        {
            if(LoginData.fucLogin(UserName.Text, PassWord.Text))
            {
                Response.Redirect("WebForm1.aspx");
            }
            else
            {
                label3.Text = "用户名或密码错误,请重新输入";
            }
        }
//这是校验登录密码函数写到类里面去了
 public static bool fucLogin(string username, string password)
    {
        bool success = false;
        SqlConnection myConnection = new SqlConnection(conStr);
        myConnection.Open();
        SqlCommand objCmd = new SqlCommand("select * from userinfo where UserName='" + username + "'",myConnection);
        try
        {
            SqlDataReader myReader = objCmd.ExecuteReader();
            if (myReader.Read())
            {

                if (myReader["PassWord"].ToString() == password)
                {
                    success = true;
                }
            }
        }
        catch (SqlException ex)
        {
            success = false;
        }
        finally
        {
            if (myConnection.State == ConnectionState.Open)
            {
                myConnection.Close();
            }
        }
        return success;
    }

这是数据库里面的数据
图片说明
我能够成功注册用户然后把数据写入数据库,但是用新注册的用户名和密码就是登录不进去。
如果把if判断语句注释掉变成这样

 try
        {
            SqlDataReader myReader = objCmd.ExecuteReader();
            if (myReader.Read())
            {

                //if (myReader["PassWord"].ToString() == password)
                //{
                    success = true;
                //}
            }
        }

就能输入用户名pan 密码随便输入都能登录进去,我觉得那个if语句有问题但是又看不出哪里出错了。。。小菜鸡刚开始学asp.net之前没接触过c#和数据库。。。还请各位指点指点

5个回答

caozhy
caozhy   Ds   Rxr 2016.02.18 05:18
已采纳

目测你的pan后面有很多空格

showbo
showbo   Ds   Rxr 2016.02.18 08:59

应该和caozhy说的一样,数据库的值包含空格了,或者字段类型是char的,不足长度自动补充空格导致无法匹配

enpterexpress
enpterexpress   2016.02.18 09:18

username字段设置为nvarchar类型的

Royal_lr
Royal_lr   Ds   Rxr 2016.02.18 09:40

一般得到值后,,先trim一下,,去掉前后空格,,在插入到数据库

zsj22307
zsj22307   2016.02.18 03:11

1,能不能插入数据到表,不能得话你先学如何插入,查询,更新,删除
2,如果有——》就用查询的数据和输入的用户名,密码做比对==正确登入、、错误的话打印出错信息

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!