zoukankan      html  css  js  c++  java
  • Net学习日记_ADO.Net_2_练习(登录逻辑)

    要求:

    页面:

    数据库设定

    主程序

    using System;
    using System.Data.SqlClient;
    using System.Windows.Forms;
    
    namespace Test01
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void BtOK_Click(object sender, EventArgs e)
            {
                SqlConnection conn = new SqlConnection("server=PC201609230944\SQL2005;database=HeiMaBlog;user=sa;pwd=123456");
                SqlCommand cmd = new SqlCommand("select *,datediff(minute,LastErrTime,GETDATE()) from UserInfo where UserName=@UserName", conn);
                cmd.Parameters.Add(new SqlParameter("@UserName", TxName.Text.Trim()));
                conn.Open();
                SqlDataReader dr = cmd.ExecuteReader();
    
                if (dr.HasRows)
                {
                    dr.Read();////不管dr取到多少条数据,只取出前面第一行(调用一次read,就会读取一行,也只读取一行)
                    if (dr.GetInt32(5) < 15)
                    {
                        MessageBox.Show("时间未到,请稍后重试!!");
                        return;
                    }
    
                    if (dr[2].ToString() == TxPwd.Text.Trim())
                    {
                        MessageBox.Show("登录成功!!");
                        UserInfo.ReSetErrTimes(dr.GetInt32(0));//登录成功后,就重置错误时间
                    }
                    else
                    {
                        //如果密码不正确!!
                        MessageBox.Show("登录失败,密码错误");
                        UserInfo.UpDateErrTimes(dr.GetInt32(0));
                        // 错误三次就更新错误时间
                        if (dr.GetInt32(3) + 1 == 3)
                        {
                            UserInfo.UpDateLastErrTime(dr.GetInt32(0));
                            UserInfo.ReSetErrTimes(dr.GetInt32(0));
                        }
                    }
                }
                else
                {
                    MessageBox.Show("该用户不存在!!!");
                }
            }
        }
    }

    辅助

    using System.Data.SqlClient;
    
    namespace Test01
    {
        class UserInfo
        {
            /// <summary>
            /// 更新错误时间!!
            /// </summary>
            /// <param name="id"></param>
            /// <returns></returns>
            public static int UpDateErrTimes(int id)
            {
                using (SqlConnection conn = new SqlConnection("server=PC201609230944\SQL2005;database=HeiMaBlog;user=sa;pwd=123456"))
                {
                    using (SqlCommand cmd = new SqlCommand("update UserInfo set ErrTimes=ErrTimes+1 where id=" + id, conn))
                    {
                        conn.Open();
                        return cmd.ExecuteNonQuery();
                    }
                }
            }
    
            /// <summary>
            /// 重置错误时间
            /// </summary>
            /// <param name="id"></param>
            /// <returns></returns>
            public static int ReSetErrTimes(int id)
            {
                using (SqlConnection conn = new SqlConnection("server=PC201609230944\SQL2005;database=HeiMaBlog;user=sa;pwd=123456"))
                {
                    using (SqlCommand cmd = new SqlCommand("update UserInfo set ErrTimes=0 where id=" + id, conn))
                    {
                        conn.Open();
                        return cmd.ExecuteNonQuery();
                    }
                }
            }
    
            /// <summary>
            /// 更新3次错误的输入时间
            /// </summary>
            /// <param name="id"></param>
            /// <returns></returns>
            public static int UpDateLastErrTime(int id)
            {
                using (SqlConnection conn = new SqlConnection("server=PC201609230944\SQL2005;database=HeiMaBlog;user=sa;pwd=123456"))
                {
                    using (SqlCommand cmd = new SqlCommand("update UserInfo set LastErrTime = getDate() where id= " + id, conn))
                    {
                        conn.Open();
                        return cmd.ExecuteNonQuery();
                    }
    
                }
    
            }
    
        }
    }

     注意:SqlDataReader的Read将数据读取出来到本地而已,对读取出来的本地数据进行整改对数据库没有啥作用。

  • 相关阅读:
    AVL树的java实现
    request和response的setCharacterEncoding()方法
    几种常用数据库连接池的使用
    String类、static关键字、Arrays类、Math类
    QT学习笔记(day02)
    QT学习笔记(day01)
    STL中栈和链表的不同实现方式的速度对比
    C++泛化双端队列
    C++泛化队列
    C++泛化栈
  • 原文地址:https://www.cnblogs.com/lisong-home/p/7747770.html
Copyright © 2011-2022 走看看