winfrom中对datagridview控件更新数据并添加到数据库中

发布时间 2023-05-27 10:03:00作者: wang王dd

第一种方法:双击鼠标直接修改数据同步到数据库

1、首先在app.config配置数据库

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <connectionStrings>
        <add name="local"
             connectionString="Data Source=DESKTOP-H4SJVU2;Initial Catalog=Hello_world;Integrated Security=True"
             providerName="System.Data.SqlClient"/>
    </connectionStrings>
    <appSettings>
        <add key="connectionstring"
             value="Data Source=DESKTOP-H4SJVU2;Initial Catalog=Hello_world;Integrated Security=True"/>
    </appSettings>
</configuration>

2、在这里面连接数据库,相当于定义一个全局的conn

 3、接着定义连接数据库的常用的全局变量

4、 点击窗体进入load中显示数据,这样主要运行项目数据就可以直接显示在daagridview控件中代码如下:

private void Form1_Load(object sender, EventArgs e)
        {
            conn.Open();
            sqlStr = "select * from user_info";
            SqlDataAdapter adapter = new SqlDataAdapter(str, conn);
            DataSet ds = new DataSet();
            adapter.Fill(ds, "user_info");
            dataGridView1.DataSource = ds.Tables["user_info"];
            conn.Close();
        }

5、在datagridview属性里面找到EideMode属性,设置为EditOnEnter

 6、然后找到事件CellValueChanged

 7、双击点进去代码如下:

 

private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
        {
            try
            {
                conn.Open();
                //定义一个字符串str1=表格控件.列【事件获取列的索引】.表头的文本+‘=’+单引号+表格控件.当前单元格.值.转换string类型+单引号
                //【e.columnIndex】为什么要用这个?因为我们要编辑那个行的时候,需要用到(比如数字监控他在bname上)要获取bname的列名字
                string str1 = dataGridView1.Columns[e.ColumnIndex].HeaderText + "=" + "'" + dataGridView1.CurrentCell.Value.ToString() + "'";


                //定义一个字符串str2=表格控件.行【事件获取行的索引】.单元格【0】.值.转换string类型
                //where bid=100005 这个1005怎么获取?【e.RowIndex】获取行的索引.因为100005在单元格中第1行,(索引器从0开始的0就是1),在获取这个上面的值.转换成string类型
                string str2 = dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString();

                //关联str1和str2 执行update 的时候就相当于把条件获取string变量上
                string sqlupdate = "update user_info set " + str1 + " where user_id=" + str2;

                //为什么用sqlcommand,不用dataadapter呢?因为SqlCommand下面有个方法ExecuteNonQuery,它ExecuteNonQuery()不返回任何值,一把应用于 insert update delete语句中
                cmd = new SqlCommand(sqlupdate, conn);

                cmd.ExecuteNonQuery();  //用到只能更新的方法来交互数据库更新



            }
            catch (Exception ex)
            {

                MessageBox.Show(ex.Message);
            }
            finally
            {

                conn.Close();
            }
        }

 第二种方法:选择datagridview中的数据到txtbook中,在txtbox中修改数据,同步到数据库

我的表为user_info,有三个字段:user_id,user_name,user_pwd

1、在窗体中添加箭头所指的几个控件,id是主键,是不能修改的,所以在txtbox属性中找到readonly设置为true

 2、连接数据库操作同第一种方法

3、在load里面查询数据,运行项目时数据直接显示同方法一一样

4、找到datagridview中的cellClick事件双击,将datagridview和txtbox进行捆绑

 5、单击批量保存按钮继续代码编辑,跟新操作并同步到数据库中

这里的定义的i是表示更新一条数据后会返回一个执行结果用来提示更新状态