zoukankan      html  css  js  c++  java
  • C#通过窗体应用程序操作数据库(增删改查)

    为了体现面向对象的思想,我们把“增删改查”这些函数封装到一个数据库操作类里;

    为了便于窗体程序与数据库之间进行数据交互,我们建一个具有数据库行数据的类,通过它方便的在窗体程序与数据库之间传输数据;

    我们新建一个文件夹,把这两个类放在这个文件夹(App)里,以后,把命名空间写上就可以使用这两个类了。

    image

    imageimage

    为了便于窗体程序与数据库之间进行数据交互,我们建一个具有数据库行数据的类,通过它方便的在窗体程序与数据库之间传输数据。

    首先,建立程序的主窗体

    image

    ㈠添加数据

    当点击“增加”,弹出一个子窗体,通过子窗体往数据库中添加一条数据

    private void button1_Click(object sender, EventArgs e)
            {
                Form5 insert= new Form5();
                insert.Owner = this;
                insert.Show();        
            }

    image

    子窗体里的函数:

    复制代码
    public partial class Form5 : Form
        {
            public Form5()
            {
                InitializeComponent();
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
        //将文本框中的数据存入SqlData类型的变量udata中
                SqlData udata = new SqlData();
                udata.Name = textBox1.Text;
                udata.Code = textBox2.Text;
    
                new SqlDA().addData(udata);//调用添加数据函数,添加数据udata
            }
    
          
        }
    复制代码

    运行程序,添加数据,查看结果

    imageimage

    ㈡查询数据

    第一个查询形式, 
    首先我们需要窗口一加载,就显示出数据库中的所有数据

    首先,在存放方法的SqlDA类中,添加一个获取数据的成员方法,该方法能返回一个数据集合

    复制代码
    //查询数据的方法
            public List<SqlData> select()
            {
                List<SqlData> list=new List<SqlData>();
                //连接数据库,访问数据
                _cmd = _con.CreateCommand();
                _con.Open();
                _cmd.CommandText = "select *from users";
                SqlDataReader dr= _cmd.ExecuteReader();
    
                //将数据库数据转换成Sqldata类型,并放入list集合中
                while  (dr.Read())
                {
                    SqlData data=new SqlData();
                    data.Code = dr["code"].ToString();
                    data.Name = dr["name"].ToString();
                    data.Pwd = dr["pwd"].ToString();
                    list.Add(data);
                }
                _con.Close();
                return list;
            }
    复制代码

    然后定义一个绑定数据函数,该函数将上面成员方法返回的数据绑定到listview1中,显示出来

    复制代码
    //绑定数据函数
            public void  bindData(List<SqlData> list)
            {
                //构建表结构
                listView1.Columns.Add("编号");
                listView1.Columns.Add("用户名");
                listView1.Columns.Add("密码");
                //将集合中的数据放入listview1中
                foreach (SqlData data in list)
                {
                    ListViewItem it = new ListViewItem();//构建一个listviewitem对象,通过它把数据放入listview1中
                    it.Text = data.Code;
                    it.SubItems.Add(data.Name);
                    it.SubItems.Add(data.Pwd );
    
                    listView1.Items.Add(it);//将数据放入listview1的items集合中,
                }
                
            }
    复制代码

    然后窗体加载事件中,追加绑定数据函数的委托

    //窗体一加载,在listview1中绑定数据
            private void Form4_Load(object sender, EventArgs e)
            {
                bindData(new SqlDA().select());
    
            }

    运行结果

    image

    第二个查询形式, 
    在窗口中输入用户名,根据用户名进行模糊查询

    首先写一个需要参数(用户名)的查询函数,我们可以写一个select的重载函数,如下

    复制代码
    //查询数据的方法2,需要一个字符串参数,与上面的函数构成重载
            public List<SqlData> select(string uname)
            {
                List<SqlData> list = new List<SqlData>();
                //连接数据库,访问数据
                _cmd = _con.CreateCommand();
                _con.Open();
                _cmd.CommandText = "select *from users where name like '%"+uname+"%'";
                SqlDataReader dr = _cmd.ExecuteReader();
    
                //将访问到的数据库数据转换成Sqldata类型,并放入list集合中
                while (dr.Read())
                {
                    SqlData data = new SqlData();
                    data.Code = dr["code"].ToString();
                    data.Name = dr["name"].ToString();
                    data.Pwd = dr["pwd"].ToString();
                    list.Add(data);
                }
                _con.Close();
                return list;
            }
    复制代码

    点击“查询”按钮

    //通过输入用户名,查询数据
            private void button4_Click(object sender, EventArgs e)
            {
                listView1.Items.Clear();
                bindData(new SqlDA().select(textBox1.Text));
            }

    image

    ㈢修改数据

    首先,将主窗口的FullRowSelect属性设为True,使行数据可选

    image

    点击“修改”,弹出以下“修改”子窗体

    image

    修改数据不需要修改编号,将“修改”子窗体的第一个文本框的“Enabled”属性设为false。

    “修改”子窗体的代码

    复制代码
    public partial class Form6 : Form
        {
           
            public Form6()
            {
                InitializeComponent();
            }
            //重写修改窗口的构造函数,显示选中项的数据
            public Form6(SqlData data)
            {
                InitializeComponent();
    
                textBox3.Text=data.Code;
                textBox1.Text=data.Name;
                textBox2.Text=data.Pwd;
    
            }
           
    
    
            private void button1_Click(object sender, EventArgs e)
            {
                //将输入的内容转成SqlData格式
                SqlData data = new SqlData();
                data.Code = textBox3.Text;
                data.Name = textBox1.Text;
                data.Pwd = textBox2.Text;
                //调用修改数据函数
                new SqlDA().update(data);
            }
               
    }
    复制代码

    修改数据的函数

    复制代码
    //修改数据的方法
            public void  update (SqlData data)
            {
                //打开连接,拼接命令
                _con.Open();
                _cmd = _con.CreateCommand();
                _cmd.CommandText = "update users set name=@name,pwd=@pwd where code=@code";
                _cmd.Parameters.Add("@name",data.Name );
                _cmd.Parameters.Add("@pwd", data.Pwd);
                _cmd.Parameters.Add("@code", data.Code);
                //执行命令,关闭连接
                _cmd.ExecuteNonQuery();
                _con.Close();
                
            }
    复制代码

    将用户名、密码输入后,点击“修改”,在主窗口中点击“查询”,可以看到数据已修改

    image

    ㈢删除数据

    复制代码
    //删除数据的方法
            public void delete(SqlData data)
            {
                //打开连接,拼接命令
                _con.Open();
                _cmd = _con.CreateCommand();
                _cmd.CommandText = "delete from users where code=@code";
                _cmd.Parameters.Add("@code", data.Code);
                //执行命令,关闭连接
                _cmd.ExecuteNonQuery();
                _con.Close();
    
            }
    复制代码

    newimage1

  • 相关阅读:
    Tensorflow实战(二):Discuz验证码识别
    文竹越长越乱?教你7种修剪方法可保持文竹株形优美,矮壮浓密
    拼应需求分析
    软工实践结对第二次作业
    软工团队第一次作业--团队展示
    学习命令行传参
    软工实践第三次作业-原型设计
    软工实践第二次作业2.0
    软工实践第二次作业
    学习c++ofstream和ifstream
  • 原文地址:https://www.cnblogs.com/dawasai/p/4443857.html
Copyright © 2011-2022 走看看