首页 > 代码库 > 练习:WinForm--DataGridView增删改查完整版

练习:WinForm--DataGridView增删改查完整版

技术分享
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Data.SqlClient;namespace DataGridView增删改查完整版.DataConnection{    public class DataConnection    {        private static string connstr = "server=.; database=mydb; user=sa; pwd=ray; ";        public static SqlConnection Conn        {            get { return new SqlConnection(connstr); }        }    }}
DataConnection
技术分享
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace DataGridView增删改查完整版.Model{    public class Info    {        private string _code;        public string Code        {            get { return _code; }            set { _code = value; }        }        private string _name;        public string Name        {            get { return _name; }            set { _name = value; }        }        private bool _gender;        public bool Gender        {            get { return _gender; }            set { _gender = value; }        }                private string _nation;        public string Nation        {            get { return _nation; }            set { _nation = value; }        }                private DateTime _birthday;        public DateTime Birthday        {            get { return _birthday; }            set { _birthday = value; }        }        //属性扩展        public string GenderName        {            get { return _gender ? "" : ""; }        }        public int Age        {            get { return DateTime.Now.Year - _birthday.Year; }        }        public string NationName        {            get            {                DataOperation.NationData nd = new DataOperation.NationData();                return nd.NationName(Nation);            }        }     }}using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace DataGridView增删改查完整版.Model{    public class Nation    {        private string _code;        public string Code        {            get { return _code; }            set { _code = value; }        }        private string _name;        public string Name        {            get { return _name; }            set { _name = value; }        }    }}
Model
技术分享
/* *InfoData */using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Data.SqlClient;namespace DataGridView增删改查完整版.DataOperation{    public class InfoData    {        private SqlConnection _conn;        private SqlCommand _cmd;        private SqlDataReader _dr;        public InfoData()        {            _conn = DataConnection.DataConnection.Conn;            _cmd = _conn.CreateCommand();        }        /// <summary>        /// 查询Info表全部数据        /// </summary>        /// <returns></returns>        public List<Model.Info> Select()        {            _cmd.CommandText = "select *from Info";            _conn.Open();            _dr = _cmd.ExecuteReader();            List<Model.Info> list = new List<Model.Info>();            if (_dr.HasRows)            {                while (_dr.Read())                {                    Model.Info data = new Model.Info();                    data.Code = _dr["Code"].ToString();                    data.Name = _dr["Name"].ToString();                    data.Gender = Convert.ToBoolean(_dr["Sex"]);                    data.Nation = _dr["Nation"].ToString();                    data.Birthday = Convert.ToDateTime(_dr["Birthday"]);                    list.Add(data);                }            }            _conn.Close();            return list;        }        /// <summary>        /// 查询Info表指定数据        /// </summary>        /// <param name="code"></param>        /// <returns></returns>        public Model.Info Select(string code)        {            _cmd.CommandText = "select *from Info where Code=@code";            _cmd.Parameters.Clear();            _cmd.Parameters.AddWithValue("@code",code);            _conn.Open();            _dr = _cmd.ExecuteReader();            Model.Info data = new Model.Info();            if (_dr.HasRows)            {                while (_dr.Read())                {                    data.Code = _dr["Code"].ToString();                    data.Name = _dr["Name"].ToString();                    data.Gender = Convert.ToBoolean(_dr["Sex"]);                    data.Nation = _dr["Nation"].ToString();                    data.Birthday = Convert.ToDateTime(_dr["Birthday"]);                }            }            _conn.Close();            return data;        }        /// <summary>        /// 多条件查询Info表中数据        /// </summary>        /// <param name="name">姓名</param>        /// <param name="gender">性别</param>        /// <param name="age">年龄</param>        /// <param name="nation">民族</param>        /// <returns>List<Info></returns>        public List<Model.Info> Select(string name,string gender,string nation)        {            string tjName = " 1=1 ", tjGender = " 1=1 ", tjNation = " 1=1 ";                        //输入姓名            if (name != "")               {                tjName = " Name like @name ";            }            //输入性别            if (gender != "")               {                tjGender = " Sex=@gender ";            }            bool genderBool;            if (gender == "")            {                genderBool = true;            }            else { genderBool = false; }                        //选择民族            string nationcode = "";            if (nation != "")            {                tjNation = " Nation=@nation ";                DataOperation.NationData nda=new NationData();                nationcode = nda.NationCode(nation);            }                       _cmd.CommandText = "select *from Info where" + tjName + "and" + tjGender+ "and" + tjNation;            _cmd.Parameters.Clear();            _cmd.Parameters.AddWithValue("@name", "%" + name + "%");            _cmd.Parameters.AddWithValue("@gender", genderBool);            _cmd.Parameters.AddWithValue("@nation", nationcode);            _conn.Open();            _dr = _cmd.ExecuteReader();            List<Model.Info> list = new List<Model.Info>();            if (_dr.HasRows)            {                while (_dr.Read())                {                    Model.Info idata = new Model.Info();                    idata.Code = _dr["Code"].ToString();                    idata.Name = _dr["Name"].ToString();                    idata.Gender = Convert.ToBoolean(_dr["Sex"]);                    idata.Nation = _dr["Nation"].ToString();                    idata.Birthday = Convert.ToDateTime(_dr["Birthday"]);                    list.Add(idata);                }            }            _conn.Close();            return list;        }        /// <summary>        /// 向Info表中添加数据        /// </summary>        /// <param name="code"></param>        /// <param name="name"></param>        /// <param name="gender"></param>        /// <param name="nation"></param>        /// <param name="birthday"></param>        public void Insert(string code,string name,string gender,string nation,string birthday)        {            DataOperation.NationData nda = new NationData();            bool genderBool;            if (gender == "")            {                genderBool = true;            }            else { genderBool = false; }            _cmd.CommandText = "insert into Info values(@code,@name,@gender,@nation,@birthday)";            _cmd.Parameters.Clear();            _cmd.Parameters.AddWithValue("@code",code);            _cmd.Parameters.AddWithValue("@name",name);            _cmd.Parameters.AddWithValue("@gender", genderBool);            _cmd.Parameters.AddWithValue("@nation",nda.NationCode(nation));            _cmd.Parameters.AddWithValue("@birthday",birthday);            _conn.Open();            _cmd.ExecuteNonQuery();            _conn.Close();        }        /// <summary>        /// 修改Info表中数据        /// </summary>        /// <param name="code"></param>        /// <param name="name"></param>        /// <param name="gender"></param>        /// <param name="nation"></param>        /// <param name="birthday"></param>        public void Update(string code, string name, bool gender, string nation, string birthday)        {            _cmd.CommandText = "update Info set Name=@name,Sex=@sex,Nation=@nation,Birthday=@birthday where Code=@code";            _cmd.Parameters.Clear();            _cmd.Parameters.AddWithValue("@code", code);            _cmd.Parameters.AddWithValue("@name", name);            _cmd.Parameters.AddWithValue("@sex", gender);            _cmd.Parameters.AddWithValue("@nation", nation);            _cmd.Parameters.AddWithValue("@birthday", birthday);            _conn.Open();            _cmd.ExecuteNonQuery();            _conn.Close();        }        public void Delete(string code)        {            _cmd.CommandText = "delete from Info where code=@code";            _cmd.Parameters.Clear();            _cmd.Parameters.AddWithValue("@code",code);            _conn.Open();            _cmd.ExecuteNonQuery();            _conn.Close();        }    }}/* * NationData */using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Data.SqlClient;namespace DataGridView增删改查完整版.DataOperation{    public class NationData    {        private SqlConnection _conn;        private SqlCommand _cmd;        private SqlDataReader _dr;        public NationData()        {            _conn = DataConnection.DataConnection.Conn;            _cmd = _conn.CreateCommand();        }        /// <summary>        /// 民族代号转换民族名称        /// </summary>        /// <param name="code">代号</param>        /// <returns>名称</returns>        public string NationName(string code)        {            _cmd.CommandText = "select Name from Nation where Code=@code";            _cmd.Parameters.Clear();            _cmd.Parameters.AddWithValue("@code",code);            _conn.Open();            _dr = _cmd.ExecuteReader();            if (_dr.HasRows)            {                _dr.Read();                return _dr[0].ToString();            }            else { return null; }            _conn.Close();        }        /// <summary>        /// 民族名称转换民族代号        /// </summary>        /// <param name="nation">名称</param>        /// <returns>代号</returns>        public string NationCode(string name)        {            _cmd.CommandText = "select Code from Nation where Name=@name";            _cmd.Parameters.Clear();            _cmd.Parameters.AddWithValue("@name", name);            _conn.Open();            _dr = _cmd.ExecuteReader();            if (_dr.HasRows)            {                _dr.Read();                return _dr[0].ToString();            }            else { return null; }            _conn.Close();        }        /// <summary>        /// 查询Nation表信息        /// </summary>        /// <returns></returns>        public List<Model.Nation> Select()        {            List<Model.Nation> list = new List<Model.Nation>();            _cmd.CommandText = "select * from Nation";            _conn.Open();            _dr = _cmd.ExecuteReader();            if (_dr.HasRows)            {                while (_dr.Read())                {                    Model.Nation data = new Model.Nation();                    data.Name = _dr["Name"].ToString();                    list.Add(data);                }            }            _conn.Close();            return list;        }    }}
DataOperation

主界面:

技术分享

技术分享
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;namespace DataGridView增删改查完整版{    public partial class Form1 : Form    {        public Form1()        {            InitializeComponent();        }        //窗体加载执行事件        private void Form1_Load(object sender, EventArgs e)        {            DataOperation.InfoData ida = new DataOperation.InfoData();            dataGridView1.DataSource = ida.Select();            dataGridView1.ClearSelection();            DataOperation.NationData nda = new DataOperation.NationData();            cmbNation.DataSource = nda.Select();            cmbNation.DisplayMember = "Name";            cmbNation.ValueMember = "Code";        }        //查询        private void btnSelect_Click(object sender, EventArgs e)        {            string name = txtName.Text;            string gender;            if (checkBox1.Checked)            {                gender = checkBox1.Text;                if (checkBox2.Checked)                {                    gender = "";                }            }            else if (checkBox2.Checked)            {                gender = checkBox2.Text;            }            else { gender = ""; }            string nation = cmbNation.Text;            if (cmbNation.Text == "请选择")            {                nation = "";            }            DataOperation.InfoData data = new DataOperation.InfoData();            dataGridView1.DataSource = data.Select(name, gender, nation);            dataGridView1.ClearSelection();        }        //添加        private void btnAdd_Click(object sender, EventArgs e)        {            FormInsert f = FormInsert.NewInsert();            f.Show();            f.Focus();        }                //删除        private void btnDel_Click(object sender, EventArgs e)        {            if (dataGridView1.SelectedRows.Count > 0)            {                MessageBoxButtons btn = MessageBoxButtons.YesNoCancel;                if (MessageBox.Show("确定删除吗?", "删除数据", btn) == DialogResult.Yes)                {                    Model.Info data = dataGridView1.SelectedRows[0].DataBoundItem as Model.Info;                    DataOperation.InfoData da = new DataOperation.InfoData();                    da.Delete(data.Code);                    //刷新数据                    dataGridView1.DataSource = da.Select();                    dataGridView1.ClearSelection();                }            }            else { MessageBox.Show("没有选中任何项"); }        }        //修改        private void btnUpdate_Click(object sender, EventArgs e)        {            if (dataGridView1.SelectedRows.Count > 0)            {                Model.Info data = dataGridView1.SelectedRows[0].DataBoundItem as Model.Info;                FormUpdate f = FormUpdate.NewUpdate(data.Code);                f.Show();                f.Focus();            }            else { MessageBox.Show("没有选中任何项"); }        }        //Timer刷新页面        public static int bs = 0;    //定义成员变量用来接收刷新数据        private void timer1_Tick(object sender, EventArgs e)        {            if (bs == 1)            {                DataOperation.InfoData da = new DataOperation.InfoData();                dataGridView1.DataSource = da.Select();                bs = 0;                dataGridView1.ClearSelection();            }        }     }}
Form1

 

添加界面:

技术分享

技术分享
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;namespace DataGridView增删改查完整版{    public partial class FormInsert : Form    {        private FormInsert()        {            InitializeComponent();        }        private static FormInsert f = null;        /// <summary>        /// 返回对象的方法        /// </summary>        /// <returns></returns>        public static FormInsert NewInsert()        {            if (f == null || f.IsDisposed)            {                f=new FormInsert();            }            return f;        }        private void FormInsert_Load(object sender, EventArgs e)        {               //绑定下拉列表内容            DataOperation.NationData data=http://www.mamicode.com/new DataOperation.NationData();            comboBox1.DataSource = data.Select();            comboBox1.DisplayMember = "Name";            comboBox1.ValueMember = "Code";           }        //添加按钮        private void button1_Click(object sender, EventArgs e)        {            //获取输入数据            string code = txtcode.Text;            string name = txtname.Text;            string gender;            if (radioButton1.Checked)            {                gender = radioButton1.Text;            }            else { gender = radioButton2.Text; }            string nation = comboBox1.Text;            string birthday = txtbirthday.Text;            //非空提示            if (code == "")            {                MessageBox.Show("编码不能为空");             }            else if( name == "")            {                MessageBox.Show("姓名不能为空");            }            else if (birthday == "")            {                MessageBox.Show("生日不能为空");            }            else             {                //调用Insert方法,添加数据                DataOperation.InfoData ida = new DataOperation.InfoData();                ida.Insert(code, name, gender, nation, birthday);                //刷新Form1数据                Form1.bs = 1;                //关闭当前窗体                this.Close();             }          }    }}
FromInsert

 

修改界面:

技术分享

技术分享
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;namespace DataGridView增删改查完整版{    public partial class FormUpdate : Form    {           //用来存储传递过来的主键值        private string Code = "";        private FormUpdate(string code)        {            InitializeComponent();            this.Code = code;        }        //用来存储该类的对象        private static FormUpdate u = null;        /// <summary>        /// 返回对象的方法        /// </summary>        /// <param name="code">code</param>        /// <returns></returns>        public static FormUpdate NewUpdate(string code)        {            if (u == null || u.IsDisposed)            {                u = new FormUpdate(code);            }            return u;        }        private void FormUpdate_Load(object sender, EventArgs e)        {            //绑定下拉列表数据            DataOperation.NationData data=http://www.mamicode.com/new DataOperation.NationData();            comboBox1.DataSource = data.Select();            comboBox1.DisplayMember = "Name";            comboBox1.ValueMember = "Code";            //页面内容初始化            DataOperation.InfoData idata = http://www.mamicode.com/new DataOperation.InfoData();            Model.Info ida = idata.Select(Code);            txtcode.Text = ida.Code;            txtname.Text = ida.Name;            radioButton1.Checked = ida.Gender;            radioButton2.Checked = !ida.Gender;            txtbirthday.Text = ida.Birthday.ToString("yyyy-MM-dd");            comboBox1.Text = ida.NationName;        }        //修改按钮        private void button1_Click(object sender, EventArgs e)        {            DataOperation.NationData data = new DataOperation.NationData();            string codeXG = txtcode.Text;            string nameXG = txtname.Text;            bool genderXG = radioButton1.Checked;            string nationXG = data.NationCode(comboBox1.Text);            string birthdayXG = txtbirthday.Text;            DataOperation.InfoData Idata = new DataOperation.InfoData();            Idata.Update(codeXG, nameXG, genderXG, nationXG, birthdayXG);            Form1.bs = 1;            this.Close();        }    }}
FormUpdate

 

运行界面:

技术分享

多条件查询:

技术分享技术分享

技术分享技术分享

添加:

技术分享技术分享

技术分享技术分享

 

 技术分享技术分享           

 技术分享技术分享

删除:

技术分享技术分享

技术分享

修改:

技术分享技术分享

技术分享技术分享

 

练习:WinForm--DataGridView增删改查完整版