zoukankan      html  css  js  c++  java
  • 第五节 17DateStr 简单

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Data.SqlClient;
    using System.Configuration;
    using _17DateStr.DataSet1TableAdapters;
    /* DataSet
     * 每次读取的数据都创建连接,执行Command得到SqlDataReader太麻烦,让我们封装一个方法
     * 
     * SqlDataReader对于小数据量的数据来说带来的只有麻烦,优点可以忽略不计
     * 
     * SqlDataReader是连接相关的,SqlDataReader中的查庖结果并不是放到程序中的
     * 而是放在数据库服务器中,SqlDataReader只是相当于放了一个指针(游标),只能读取当前游标指向的行
     * 一旦连接开就不能再读取,这样做的好处就是无论查询结果有多少条,对程序占用的内存都几乎没有影响
     * ADO.Net中提供了数据集的机制,将查询结果填充到本地内存中,这样连接断开,服务器断开都不影响数据的读取
     * DataSet dataset = new DataSet();
     * SqlDataAdapter adapter = new SqlDataAdapter(cmd); adapter.Fill(dataset);
     * 
     * SqlDataAdapter是DataSet和数据库之间的沟通的桥梁,数据集DataSet包含若干表DataTable,DataTable包含若干行DataRow
     * foreach(DataRow row in dataset.Tables[0].Rows){
     *    row["name"];
     * }
     * 
     * 
     * SQLHelper
     * 封装一个SQLHelper类方便使用,提供ExecuteData Table(string sql, params SqlParameter[] parameters)
     * ExecuteNonQuery(string sql, params SqlParameter[] parameters)
     * ExecuteScalar(string sql, params SqlParameter[] parameters)
     * 等方法,网上有自由软件提供的最全的SQLHelper类,是Enterprise Libarary 中的一部分
     * 用Sqlhelper重写登陆程序
     * 用SQLHelper重写省市选择程序, 电话地址归属地查询
     * new SqlParameter("e",0)的陷阱
     * sqlconnection在程序中一直保持它open可以吗?对于数据库来说,连接是非常宝贵的资源,一定要用完了就close display
     * 
     *
     * DataSet的更新
     * 可以更新row["Name"] = "yzk"; 删除行datatable.Rows.Remove(),新增行datatable.NewRow(); 这一切都是修改的内存中的DataSet,没有修改数库
     * 可以调用SqlDataAdpater的update方法将对DataSet的修改提交到数据库,Update方法有很多重载方法,可以提交整个DataSet,DataTable,或者若干DataRow
     * 但是需要为sqlDataAdapter提供DeleteCommand, UpdateCommand InsertCommand它才知道如何将对DataSet的修改提交到数据库
     * 由于这几个Command要求格式非常苛刻,因此开发人员自己写非常困难,可以用SqlCommandBuilder自动生成这几个command,用法很简单
     * new SqlCommandBuilder(adapter) 查看生成的Command(没有直接赋值给SqlDataAdapter)
     * 看SqlCommandBuilder的, sqlCommandBuilder要求表必须有主键
     * (*)通过DataRow的RowState可以获得行的状态(删除,修改,新增等);调用DataSet的GetChanges()方法得到变化的结果集,降低传递的资源占用
     * 
     */
    namespace _17DateStr
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                SqlHelp.ExecuteNonQuery("Insert into T_Persons(name,age) values(@name,@age)", new SqlParameter("name","tom"),new SqlParameter("age",11));
                MessageBox.Show("插入成功!");
            }
    
            private void button2_Click(object sender, EventArgs e)
            {
                object i = SqlHelp.ExecuteScalar("select count(*) FROM T_Persons");
                MessageBox.Show("记录总数为:"+Convert.ToString(i));
            }
    
            private void button3_Click(object sender, EventArgs e)
            {
                SqlDataReader reader = SqlHelp.ExecuteReader("Select * FROM T_Persons");
                while (reader.Read())
                {
                    string name = reader.GetString(reader.GetOrdinal("name"));
                    MessageBox.Show("用户名为:" + name);
                }
            }
    
            private void button4_Click(object sender, EventArgs e)
            {
                /*string connstr = ConfigurationManager.ConnectionStrings["ConnStr"].ConnectionString;
                using (SqlConnection conn = new SqlConnection(connstr))
                {
                    conn.Open();
                    using (SqlCommand cmd = conn.CreateCommand())
                    {
                        cmd.CommandText = "select * FROM T_Persons";
                        DataSet dataset = new DataSet();
                        SqlDataAdapter adapter = new SqlDataAdapter(cmd);
                        adapter.Fill(dataset);
                        DataTable table = dataset.Tables[0];
                        for (int i = 0; i < table.Rows.Count; i++) 
                        {
                            DataRow row = table.Rows[i];
                            string name = Convert.ToString(row["name"]);
                            MessageBox.Show(name);
                        }
                    }
                }*/
                DataSet dataset = new DataSet();
                string connstr = ConfigurationManager.ConnectionStrings["ConnStr"].ConnectionString;
                using (SqlConnection conn = new SqlConnection(connstr))
                {
                    conn.Open();
                    using (SqlCommand cmd = conn.CreateCommand())
                    {
                        cmd.CommandText = "select * FROM T_Persons";
                       
                        SqlDataAdapter adapter = new SqlDataAdapter(cmd);
                        adapter.Fill(dataset);
                    }
                }
                DataTable table = dataset.Tables[0];
                for (int i = 0; i < table.Rows.Count; i++)
                {
                    DataRow row = table.Rows[i];
                    string name = Convert.ToString(row["name"]);
                    MessageBox.Show(name);
                }
    
            }
    
            private void button5_Click(object sender, EventArgs e)
            {
                DataTable table = SqlHelp.ExecuteDataTable("select * FROM T_Persons");
                foreach (DataRow row in table.Rows) 
                {
                    string name = Convert.ToString(row["name"]);
                    MessageBox.Show(name);
                }
    
            }
    
            private void tb_login_Click(object sender, EventArgs e)
            {
                string name = tb_username.Text;
                string password = tb_password.Text;
                if (name != "" && password != "")
                {
                    DataTable table = SqlHelp.ExecuteDataTable("select * FROM T_User where name=@name", new SqlParameter("name", name));
                    if (table.Rows.Count >= 1)
                    {
                        DataRow row = table.Rows[0];
                        int errorTimes =Convert.ToInt32(row["errortimes"]);
                        if(errorTimes >= 3)
                        {
                            MessageBox.Show("用户被锁定,暂时不能登陆!");
                            return;
                        }else{
                            string p = Convert.ToString(row["password"]);
                            if(p == password){
                               MessageBox.Show("登陆成功!");
                               SqlHelp.ExecuteNonQuery("update T_User set errortimes=0 where name=@name", new SqlParameter("name",name));
                               return;
                            }else{
                               
                               MessageBox.Show("登陆失败!");
                               SqlHelp.ExecuteNonQuery("update T_User set errortimes = errortimes+1 where name = @name",new SqlParameter("name",name));
                               return;
                            }
                        }
                    }
                    else {
                        MessageBox.Show("用户名不存在!");
                    }
                }
                else {
                    MessageBox.Show("用户名和密码不能为空");
                }
                
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
                DataTable table = SqlHelp.ExecuteDataTable("select * FROM promary");
                cb_promary.DisplayMember = "name";
                foreach (DataRow row in table.Rows) 
                {
                     Promary pr = new Promary();
                     pr.id = Convert.ToInt32(row["proID"]);
                     pr.name = Convert.ToString(row["proName"]);
    
                     cb_promary.Items.Add(pr);
                }
            }
    
            private void cb_promary_SelectedIndexChanged(object sender, EventArgs e)
            {
                Promary pr = (Promary)cb_promary.SelectedItem;
                int id = pr.id;
                string name = pr.name;
                DataTable table = SqlHelp.ExecuteDataTable("select * FROM city WHERE proID=@proID",new SqlParameter("proID",id));
                cb_city.Items.Clear();
                cb_city.DisplayMember = "name";
                foreach (DataRow row in table.Rows) 
                {
                    Promary p = new Promary();
                    p.id = Convert.ToInt32(row["cityID"]);
                    p.name = Convert.ToString(row["cityName"]);
                    cb_city.Items.Add(p);
                }
            }
    
            private void button6_Click(object sender, EventArgs e)
            {
                DataTable table = SqlHelp.ExecuteDataTable("select * FROM T_User WHERE id = @id",new SqlParameter("id",(object)0));
            }
    
            private void button7_Click(object sender, EventArgs e)
            {
                String connStr = ConfigurationManager.ConnectionStrings["ConnStr"].ConnectionString;
                using (SqlConnection conn = new SqlConnection(connStr)) 
                {
                    conn.Open();
                    using (SqlCommand cmd = conn.CreateCommand()) 
                    {
                        cmd.CommandText = "select * FROM T_Persons";
    
                        DataSet dataset = new DataSet();
                        SqlDataAdapter adapter = new SqlDataAdapter(cmd);
                        adapter.Fill(dataset);
    
                        DataTable table = dataset.Tables[0];
                        DataRow row = table.Rows[0];
                        row["name"] = "jason"; //修改值
    
                        foreach (DataRow r in table.Rows) 
                        {
                            string name = Convert.ToString(r["name"]);
                            MessageBox.Show("name值为:"+name);
                        }
                        //table.Rows.RemoveAt(1); //删除值
                        //table.NewRow();         //新建一个Row
    
    
                        //这里的sqlCommandBuilder主要是生成更新语句
                        SqlCommandBuilder builder = new SqlCommandBuilder(adapter);
                        
                        //这里出现了小错误,没有为表设置主键,所以提示错误
                        //"update T_Persons set name=@name, password=@password"
                        adapter.Update(dataset);//对DataSet的修改都在内存中,没有提交到数据库
                    }
                }
            }
    
            private void button8_Click(object sender, EventArgs e)
            {
                T_UserTableAdapter adapter = new T_UserTableAdapter();
                _17DateStr.DataSet1.T_UserDataTable data = adapter.GetData();
                for (int i = 0; i < data.Count; i++) 
                {
                    _17DateStr.DataSet1.T_UserRow userRow = data[i];
                    MessageBox.Show(userRow.name);
                }
    
            }
        }
    
        public class Promary 
        {
            public int id { get; set; }
            public string name { get; set; } 
        }
    }
    

      

  • 相关阅读:
    zabbix监控部署(三)
    zabbix监控部署(二)
    zabbix监控部署(一)
    Docker安装mysql5.7
    Docker修改容器默认存储路径
    MySQL全量+增量备份脚本
    企业级Dokcer镜像仓库Harbor部署
    Linux环境pyhon3安装pyinstaller
    配置Hive元数据数据库为PostgreSQL
    Oracle 11gR2 RAC 添加节点
  • 原文地址:https://www.cnblogs.com/xiangxiaodong/p/2379785.html
Copyright © 2011-2022 走看看