ADO.NET学习摘记2

WinForm程序中实现用户登录验证,错误次数三次后,就禁止登录!通过数据库来记录errortimes的值!

注意:在一个数据库连接中,只能执行一个cmd.ExecuteReader()语句,不可以在同一个连接中,再次执行类似Update语句:

     public void IncErrorTimes()
        {

            using (SqlConnection conn = new SqlConnection(@"Data Source=tianyu/SQLEXPRESS;AttachDBFilename=|DataDirectory|/MyTest.mdf;Integrated Security=true;User Instance=true"))
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText = "update T_User set ErrorTimes=ErrorTimes+1  where UserName=@username";
                    cmd.Parameters.Add(new SqlParameter("username", txtUserName.Text));
                    cmd.ExecuteNonQuery();
                }
            }
        }
        public void ResetErrorTimes()
        {

            using (SqlConnection conn = new SqlConnection(@"Data Source=tianyu/SQLEXPRESS;AttachDBFilename=|DataDirectory|/MyTest.mdf;Integrated Security=true;User Instance=true"))
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText = "update T_User set ErrorTimes=0  where UserName=@username";
                    cmd.Parameters.Add(new SqlParameter("username", txtUserName.Text));
                    cmd.ExecuteNonQuery();
                }
            }
        }
        private void btnLogin_Click(object sender, EventArgs e)
        {
            using (SqlConnection conn = new SqlConnection(@"Data Source=tianyu/SQLEXPRESS;AttachDBFilename=|DataDirectory|/MyTest.mdf;Integrated Security=true;User Instance=true"))
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText = "select * from T_User where UserName=@username";
                    cmd.Parameters.Add(new SqlParameter("username", txtUserName.Text));
                    //cmd .Parameters .Add (new SqlParameter ("password",txtPassword .Text));
                    using (SqlDataReader reader = cmd.ExecuteReader())//在同一个连接中,使用了reader就不能在使用UPDATE之类的其他操作语句!
                    {
                        if (reader.Read())
                        {
                            int errortimes = reader.GetInt32(reader.GetOrdinal("ErrorTimes"));
                            if (errortimes <3)
                            {
                                string dbpassword = reader.GetString(reader.GetOrdinal("Password"));
                                if (dbpassword == txtPassword.Text)
                                {

                                    MessageBox.Show("登录成功!");
                                    ResetErrorTimes();
                                }
                                else
                                {
                                    MessageBox.Show("用户密码错误,登录失败!");
                                    IncErrorTimes();
                                    return;
                                }
                            }
                            else
                            {
                                MessageBox.Show("登录次数过多,登录失败!");
                                return;

                            }

                        }

 


                        else
                        {
                            MessageBox.Show("用户名错误!");
                        }

 

                    }
                }

            }

        }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值