避免SQL注入,使用ADO.NET参数化查询

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

using System.Data.SqlClient;



namespace WindowsFormsApplication1

{

    public partial class Form1 : Form

    {

        int falsesTimes = 0;

        public Form1()

        {

            InitializeComponent();

        }



        private void Form1_Load(object sender, EventArgs e)

        {



        }



        private void btnEsc_Click(object sender, EventArgs e)

        {

            // Application.Exit();直接结束整个应用程序

            this.Close();//只关闭当前窗口,不关闭应用程序

        }



        private void btnLogin_Click(object sender, EventArgs e)

        {

            string name = txtName.Text.Trim();

            string pwd = txtPwd.Text;

            string connectionString = "server=.;database=Test;integrated security=true";

            #region 超过三次,退出

            //using (SqlConnection connection = new SqlConnection(connectionString))

            //{



            //    connection.Open();

            //    string sql = "select count(1) from UserInfo where name='{0}' and pwd='{1}'";

            //    sql = String.Format(sql, name, pwd);

            //    using (SqlCommand cmd = new SqlCommand(sql, connection))

            //    {

            //        int count = Convert.ToInt32(cmd.ExecuteScalar());

            //        if (count > 0)

            //        {

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

            //        }

            //        else

            //        {

            //            MessageBox.Show("登录失败");

            //            falsesTimes++;

            //            if (falsesTimes >= 3)

            //            {

            //                MessageBox.Show("登录失败次数过多,系统自动关闭");

            //                this.Close();

            //            }

            //        }

            //    }

            //}

            #endregion



            #region 锁定账号

            using (SqlConnection connection = new SqlConnection(connectionString))

            {



                connection.Open();

                //参数化查询

                //1、参数必须是@开头的,2.不能用引号引住这些参数

                string sql = "select count(1) from UserInfo where name=@name and pwd=@password and DATEDIFF(hour,lockTime,GETDATE())>=24";



                using (SqlCommand cmd = new SqlCommand(sql, connection))

                {

                    //第一种参数化查询方式

                    //SqlParameter spName = new SqlParameter("@name", name);

                    //cmd.Parameters.Add(spName);

                    //SqlParameter spPwd = new SqlParameter("@password", pwd);

                    //cmd.Parameters.Add(spPwd);

                    //第二种参数化查询方式

                    SqlParameter [] spList=new SqlParameter[2];

                    spList[0] = new SqlParameter("@name", name);

                    spList[1] = new SqlParameter("@password", pwd);

                    cmd.Parameters.AddRange(spList);

                    int count = Convert.ToInt32(cmd.ExecuteScalar());

                    if (count > 0)

                    {

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

                    }

                    else

                    {



                        sql = "select count(1) from UserInfo where name='{0}' and pwd='{1}'";

                        sql = String.Format(sql, name, pwd);

                        cmd.CommandText = sql;

                        count = Convert.ToInt32(cmd.ExecuteScalar());

                        if (count > 0)

                        {

                            MessageBox.Show("被锁定");

                        }

                        else

                        {

                            falsesTimes++;

                            MessageBox.Show("登录失败,你还有" + (3 - falsesTimes) + "次机会");



                            if (falsesTimes >= 3)

                            {

                                MessageBox.Show("登录失败次数过多,系统自动关闭");

                                sql = "update UnserInfo set lockTime=getdate() where name='{0}'";

                                sql = String.Format(sql, name);

                                cmd.CommandText = sql;

                                cmd.ExecuteNonQuery();



                                Application.Exit();

                            }

                        }



                    }

                }

            }

            #endregion

        }

    }

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值