第五节 8登陆练习操作

using System;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.IO;

namespace _8登陆练习操作
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void SetErrorTimes()
        {
            using (SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=E:\MyProjects\C#net传智播客\第五季ADO.NET\8登陆练习操作\8登陆练习操作\Database1.mdf;Integrated Security=True;User Instance=True"))
            {
                conn.Open();
                using (SqlCommand upComd = conn.CreateCommand())
                {
                    upComd.CommandText = "update T_User set ErrorTimes = ErrorTimes + 1 WHERE UserName=@UserName";
                    upComd.Parameters.Add(new SqlParameter("UserName", UserName.Text));
                    upComd.ExecuteNonQuery();
                }
            }
        }

        private void ResetErrorTimes()
        {
            using (SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=E:\MyProjects\C#net传智播客\第五季ADO.NET\8登陆练习操作\8登陆练习操作\Database1.mdf;Integrated Security=True;User Instance=True"))
            {
                conn.Open();
                using (SqlCommand updateCmd = conn.CreateCommand())
                {
                    updateCmd.CommandText = "update T_User set ErrorTimes = 0 WHERE UserName=@UserName";
                    updateCmd.Parameters.Add(new SqlParameter("UserName", UserName.Text));
                    updateCmd.ExecuteNonQuery();
                }
            }
        }
        private void button1_Click(object sender, EventArgs e)
        {
            using (SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=E:\MyProjects\C#net传智播客\第五季ADO.NET\8登陆练习操作\8登陆练习操作\Database1.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", UserName.Text));
                    using (SqlDataReader reader = cmd.ExecuteReader()) 
                    {
                        if (reader.Read())
                        {
                            int errotTimes = reader.GetInt32(reader.GetOrdinal("ErrorTimes"));
                            if (errotTimes >= 3)
                            {
                                //Console.WriteLine("对不起用户已经被锁定!");
                                MessageBox.Show("对不起用户已经被锁定!");
                            }
                            else{
                                string passwd = Password.Text;
                                string t_passwd =reader.GetString(reader.GetOrdinal("Password"));
                                if (passwd == t_passwd)
                                {
                                    //清空一下ErrorTimes
                                    //这里还没有其它的办法,只能另外写一个函数用于来更新ErrorTimes的值
                                    /*cmd.Parameters.Clear();
                                    cmd.CommandText = "update T_User set ErrorTimes = 0 WERE UserName=@UserName";
                                    cmd.Parameters.Add(new SqlParameter("UserName", UserName.Text));
                                    cmd.ExecuteNonQuery();
                                     * */
                                    ResetErrorTimes();

                                    MessageBox.Show("登陆成功!");
                                    //Console.WriteLine("登陆成功!");
                                }
                                else {
                                    //添加ErrorTimes
                                    /*cmd.Parameters.Clear(); //这里选清空一下Parameters
                                    cmd.CommandText = "update T_User set ErrorTimes = ErrorTimes + 1 WHERE UserName=@UserName";
                                    cmd.Parameters.Add(new SqlParameter("UserName",UserName.Text));
                                    cmd.ExecuteNonQuery();
                                    */
                                    //在同一个连接中,如果SqlDataReader没关闭,那么是不能执行Update之类的语句的
                                    SetErrorTimes();
                                    MessageBox.Show("密码错误!");
                                    //Console.WriteLine("密码错误!");
                                }
                            }
                        }
                        else {
                            //Console.WriteLine("用户名不存在!");
                            MessageBox.Show("用户名不存在!");
                        }
                    }
                }
            }
        }

        //文件导入
        private void button2_Click(object sender, EventArgs e)
        {
            //当点击弹出窗口,然后点击了确定
            if (openFileDialog1.ShowDialog() == DialogResult.OK) 
            {
                //取得文件流
                using (FileStream fileStream = File.OpenRead(openFileDialog1.FileName)) 
                {
                    //读取文件
                    using (StreamReader streamReader = new StreamReader(fileStream)) 
                    {
                        string line = null;
                        while ((line = streamReader.ReadLine()) != null) 
                        {
                            string[] str = line.Split('|');
                            string name = str[0];
                            string passwd = str[1];
                            int errorTimes = Convert.ToInt32(str[2]);
                            using (SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=E:\MyProjects\C#net传智播客\第五季ADO.NET\8登陆练习操作\8登陆练习操作\Database1.mdf;Integrated Security=True;User Instance=True"))
                            {
                                conn.Open();
                                using (SqlCommand cmd = conn.CreateCommand())
                                {
                                    //MessageBox.Show("name:"+name+",passwd:"+passwd+",errorTimes:"+errorTimes+"");
                                    //在这里测试了一会儿,唉,自己不小心,把变量给写错了,看来以后还要多加小心才行
                                    cmd.CommandText = "Insert into T_User(UserName, Password, ErrorTimes) values(@username,@password,@errortimes) ";
                                    cmd.Parameters.Add(new SqlParameter("username", name));
                                    cmd.Parameters.Add(new SqlParameter("password", passwd));
                                    cmd.Parameters.Add(new SqlParameter("errortimes", errorTimes));
                                    cmd.ExecuteNonQuery();
                                }                            
                            }
                        }
                    }
                }
            }
            MessageBox.Show("导入成功!");
        }

        //文件导出
        private void button3_Click(object sender, EventArgs e)
        {
            using (SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=E:\MyProjects\C#net传智播客\第五季ADO.NET\8登陆练习操作\8登陆练习操作\Database1.mdf;Integrated Security=True;User Instance=True"))
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText = "select * FROM T_User";

                    //读取多行数据
                    using (SqlDataReader reader = cmd.ExecuteReader())
                    {
                        StreamWriter sw = File.CreateText(@"c:\2.txt");

                        while (reader.Read()) //循环数据
                        {
                            long id = reader.GetInt64(reader.GetOrdinal("Id"));
                            string name = reader.GetString(reader.GetOrdinal("UserName"));
                            string passwd = reader.GetString(reader.GetOrdinal("Password"));
                            int errortimes = reader.GetInt32(reader.GetOrdinal("ErrorTimes"));
                            sw.WriteLine("{0}|{1}|{2}|{3}",id,name,passwd,errortimes);
                            //MessageBox.Show("id:" + id + ",name:" + name + ",passwd:" + passwd + ",errortimes:" + errortimes);
                        }
                        sw.Close();
                    }
                }
            }
            MessageBox.Show("导出数据成功!");
        }

        
        
        /*省市选择程序,数据全部来自于数据库:http://www.programfan.com/blog/article.asp?id=28128
         * 把createtable中的varchar改为nvarchar,在insert语句的汉字前面加上N(查找","替换为".N")我不做好像也没事
         * ComboBox的显示值,Items.Add的参数是Object类型,也就是可以放任意数据类型的数据
         * 可以设置DisplayMember属性设定显示的属性,通过SelectItem属性取得到就是选择的条目对应的对像,例子
         * 疑问: 取出来的是Object,怎么能转换为对应的类型?变量名只是"标签".显示的值和实际的对像不一样,在ASP.Net中也有相同的东西
         * 创建一个ProvinceItem类,将数据填充在这个对像中添加到ComBoBox中
         * 
         *
         */
        
        private void Form1_Load(object sender, EventArgs e)
        {
            //MessageBox.Show("一进入就开始加载省份信息!");
            //设定comboBox的DisplayMember属性为name,就会显示对像的Name属性的值
            /*cb_city.DisplayMember = "Name";
            ProvinceItem item = new ProvinceItem();
            item.Id = 1;
            item.Name = "北京";
            cb_city.Items.Add(item);

            ProvinceItem item2 = new ProvinceItem();
            item2.Id = 2;
            item2.Name = "上海";
            cb_city.Items.Add(item2);*/
            using (SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=E:\MyProjects\C#net传智播客\第五季ADO.NET\8登陆练习操作\8登陆练习操作\Database1.mdf;Integrated Security=True;User Instance=True"))
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand()) 
                {
                    cmd.CommandText = "select * FROM promary ";
                    cb_city.DisplayMember = "Name";
                    using (SqlDataReader reader = cmd.ExecuteReader()) 
                    {
                        while (reader.Read()) 
                        {
                            int proid = reader.GetInt32(reader.GetOrdinal("proID"));
                            string proName = reader.GetString(reader.GetOrdinal("proName"));
                            ProvinceItem item = new ProvinceItem();
                            item.Id = proid;
                            item.Name = proName;
                            cb_city.Items.Add(item);
                        }
                    }
                }
            }

        }

        private void cb_city_SelectedIndexChanged(object sender, EventArgs e)
        {
            /*string text = cb_city.SelectedText;
            int index = cb_city.SelectedIndex;
            //string value = cb_city.SelectedValue;
            string item = cb_city.SelectedItem.ToString();
            MessageBox.Show("item=" + item);*/

            ProvinceItem item = (ProvinceItem)cb_city.SelectedItem;
            int proId = item.Id;
            string name = item.Name;
            //MessageBox.Show("proId:"+proId+",name:"+name);
            using (SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=E:\MyProjects\C#net传智播客\第五季ADO.NET\8登陆练习操作\8登陆练习操作\Database1.mdf;Integrated Security=True;User Instance=True"))
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand()) 
                {
                    cmd.CommandText = "select * FROM city WHERE proID="+proId;
                    using (SqlDataReader reader = cmd.ExecuteReader()) 
                    {
                        cb_city_small.Items.Clear();
                        cb_city_small.SelectedIndex = -1;
                        cb_city_small.DisplayMember = "Name";
                        while (reader.Read()) 
                        {
                            ProvinceItem city = new ProvinceItem();
                            int cityID = reader.GetInt32(reader.GetOrdinal("cityID"));
                            string cityName = reader.GetString(reader.GetOrdinal("cityName"));
                            city.Id = cityID;
                            city.Name = cityName;
                            cb_city_small.Items.Add(city);
                        }
                    }
                }
            }
        }
    }
    class ProvinceItem 
    {
        public string Name { get; set; }
        public int Id { get; set; }
    }
}

  

你可能感兴趣的:(操作)