ADO.NET学习笔记(三)

(1)登陆窗体的登陆过程验证:

using System;

using System.Windows.Forms;

using System.Data.SqlClient;

namespace 登陆窗体
{
    public partial class Form1 : Form

    {
        public Form1()

        {
            InitializeComponent();
        }

        private void IntErrorTime()

        {
            using (SqlConnection conn = new SqlConnection(@"Data Source = .\SQLEXPRESS;AttachDBFilename = |DataDirectory|\MyDB.mdf;Integrated Security = True;  User Instance =True"))

            {
                conn.Open();

                using (SqlCommand updateCmd = conn.CreateCommand())

                {  //在同一个连接中,如果SqlDateReader没有关闭,那么就不能执行Update

                    updateCmd.CommandText = "update T_User set ErrorTimes=ErrorTimes+1 where UserName = @UN";

                    updateCmd.Parameters.Add("UN", txtUserName.Text);

                    updateCmd.ExecuteNonQuery();

                }

            }

        }
        private void RecentErrorTime()

        {

            using (SqlConnection conn = new SqlConnection(@"Data Source = .\SQLEXPRESS;AttachDBFilename = |DataDirectory|\MyDB.mdf;Integrated Security = True;  User Instance =True"))

            {
                conn.Open();

                using (SqlCommand updateCmd = conn.CreateCommand())

                {  //在同一个连接中,如果SqlDateReader没有关闭,那么就不能执行Update

                    updateCmd.CommandText = "update T_User set ErrorTimes=0 where UserName = @UN";

                    updateCmd.Parameters.Add("UN", txtUserName.Text);

                    updateCmd.ExecuteNonQuery();

                }

            }

        }

        private void button1_Click(object sender, EventArgs e)

        {
            using (SqlConnection conn = new SqlConnection(@"Data Source = .\SQLEXPRESS;AttachDBFilename = |DataDirectory|\MyDB.mdf;Integrated Security = True;  User Instance =True"))//实现了IDisposable接口,用using括起,便于自动释放,在using()后调用了IDisposabl方法,它先判断有无conn.Close();如果没有,先进行关闭,在释放

            {
                conn.Open();

                using (SqlCommand cmd = conn.CreateCommand())//创建命令对象的实例并与先建的数据库建立连接,将连接using进来,使此方法直接不用释放,出了括号会自动释放
                {

                    cmd.CommandText = "select * from T_User where UserName=@UN";

                    cmd.Parameters.Add("UN", txtUserName.Text);

                    using (SqlDataReader reader = cmd.ExecuteReader())

                    {
                        if (reader.Read())

                        {
                            int errorTimes = reader.GetInt32(reader.GetOrdinal("ErrorTimes"));

                            if (3 < errorTimes)

                            {

                                MessageBox.Show("登陆次数过多,禁止登陆!");

                                return;
                            }

                            else

                            {
                                string dbpassword = reader.GetString(reader.GetOrdinal("Password"));

                                if (txtPassword.Text == dbpassword)

                                {

                                    MessageBox.Show("登陆成功!");

                                    RecentErrorTime();

                                }

                                else

                                {
                                    IntErrorTime();

                                    //using (SqlCommand updatecmd = conn.CreateCommand())

                                    //{  //在同一个连接中,如果SqlDateReader没有关闭,那么就不能执行Update

                                    //    updatecmd.CommandText = "update T_User set ErrorTimes=ErrorTimes+1 where UserName = @UN";

                                    //    updatecmd.Parameters.Add("UN", txtUserName.Text);

                                    //    updatecmd.ExecuteNonQuery();

                                    //}

                                    MessageBox.Show("登陆失败!");

                                }

                            }

                        }

                        else

                        {
                            MessageBox.Show("用户名不存在~");

                        }

                    }

                }

            }

        }

    }

}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值