qq_37894070 2018-01-08 03:18 采纳率: 0%
浏览 2901
已结题

为什么我这个用户登录都可以 但是登陆后总是显示UserId和UserName无效呢

namespace _03LoginLockDemo
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

    private void btnLogin_Click(object sender, EventArgs e)
    {
        //第一步:先用户的Id,用户名,用户密码,用户错误次数,用户最后的错误时间  where UserName=txtUserName.Text  and UserPwd=txtUserPwd.Text

        string connStr = ConfigurationManager.ConnectionStrings["sqlConn"].ConnectionString;

        using (SqlConnection conn=new SqlConnection(connStr))
        {
            using (SqlCommand cmd =conn.CreateCommand())
            {
                conn.Open();
                cmd.CommandText = @"SELECT  [UserId]
                                          ,[UserName]
                                          ,[UserPwd]
                                          ,[LastErrorDateTime]
                                          ,[ErrorTimes]
                                      FROM [LoginFrm] 
                                      WHERE UserName='"+txtName.Text
                                      +"' and UserPwd='"+txtPwd.Text+"' ";

                UserInfo userInfo = null;//查询来的数据封装的对象。

                using (SqlDataReader reader = cmd.ExecuteReader())
                {
                    //把查询出来的数据赋值到userInfo
                    if (reader.Read())
                    {
                        userInfo =new UserInfo();
                        userInfo.UserId = int.Parse(reader["UserId"].ToString());
                        userInfo.UserPwd = reader["UserPwd"].ToString();
                        userInfo.UserName = reader["UserName"].ToString();
                        userInfo.LastErrorDateTime = DateTime.Parse(reader["LastErrorDateTime"].ToString());
                        userInfo.ErrorTimes = int.Parse(reader["ErrorTimes"].ToString());
                    }

                }//花括号执行结束之前,链接一直没有关闭,这时候Reader一直占用Connection对象。

                //如果查询结果为空,说明用户名密码错误,修改错误次数和 错误时间。
                if (userInfo==null)
                {
                    //修改 错误时间,错误次数  where UserName=txtUserName.Text
                    cmd.CommandText =
                        "update UserInfo set LastErrorDateTime=getdate(), ErrorTimes=ErrorTimes+1 where UserName='" +
                        txtName.Text.Trim() + "'";
                    cmd.ExecuteNonQuery();
                    MessageBox.Show("用户名密码Error");
                    return;
                }

                //如果有数据。后面校验时间 错误次数。
                if (userInfo.ErrorTimes<3 || DateTime.Now.Subtract(userInfo.LastErrorDateTime).Minutes>15 )
                {
                    MessageBox.Show("登陆成功!");
                    // 
                    cmd.CommandText =
                      "update UserInfo set LastErrorDateTime=getdate(), ErrorTimes=0 where UserId=" +userInfo.UserId;
                    cmd.ExecuteNonQuery();
                }
                else
                {
                    MessageBox.Show("登陆失败!账号被锁定!");
                }
            }
        }
    }
}

}


  • 写回答

10条回答 默认 最新

  • qq_37894070 2018-01-08 03:20
    关注

    图片说明

    评论

报告相同问题?

悬赏问题

  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)
  • ¥20 matlab yalmip kkt 双层优化问题
  • ¥15 如何在3D高斯飞溅的渲染的场景中获得一个可控的旋转物体
  • ¥88 实在没有想法,需要个思路
  • ¥15 MATLAB报错输入参数太多
  • ¥15 python中合并修改日期相同的CSV文件并按照修改日期的名字命名文件
  • ¥15 有赏,i卡绘世画不出
  • ¥15 如何用stata画出文献中常见的安慰剂检验图