栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > .Net

C# dataGridView控件数据批量修改并同步到数据库

.Net 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C# dataGridView控件数据批量修改并同步到数据库

方法一:使用循环读取dataGridView中每行每列的值然后一行行写入到数据库
  • 获取每行每列的值

代码如下:

for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)
{
	for (int j = 0;j
		Console.WriteLine(dataGridView1.Rows[i].Cells[j].Value.ToString());
	}
}

数据库中的数据

控制台输出数据

我们一般只要获取每一行的值,每一列写死就行。

private void button1_Click(object sender, EventArgs e)
{
    for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)
    {
        stu u = new stu();
        // 注意 每列的数据和数据库字段一一对应
        u.id = Convert.ToInt32(dataGridView1.Rows[i].Cells[0].Value.ToString());
        u.userName = dataGridView1.Rows[i].Cells[1].Value.ToString();
        u.age = Convert.ToInt32(dataGridView1.Rows[i].Cells[2].Value.ToString());

        if (!StuMod(u))
        {
            MessageBox.Show("批量修改失败!");
        }
    }
    MessageBox.Show("批量修改成功!");
    // 刷新数据
    string sqlstr = "select * from stu";
    dataGridView1.DataSource = DBHelper.GetDataTable(sqlstr);
}

当然如果不需要按钮的话,可以把代码写到 CellClick事件中。

此例子下载地址:https://wybing.lanzous.com/iJdqYoxwnzc

开发环境为:vs2019 | Sql Server 2016 | .NET Framework 4.5

我们需要考虑到一个问题,如果数据量特别大,那么一次性写入这么多数据会给数据库造成很大的压力。用户不可能一次性修改所有数据,肯定时一条条修改,那么我们可以使用 CellEndEdit事件 用户改一条我们同步一条。

方法二:使用CellEndEdit事件同步用户操作到数据库

使用方式也很简单,为dataGridView控件添加CellEndEdit事件

该方法的代码如下:

		private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
        {
            stu u = new stu();
            u.id = Convert.ToInt32(dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString());
            u.userName = dataGridView1.Rows[e.RowIndex].Cells[1].Value.ToString();
            u.age = Convert.ToInt32(dataGridView1.Rows[e.RowIndex].Cells[2].Value.ToString());

            if (!StuMod(u))
            {
                MessageBox.Show("批量修改失败!");
            }
        }

此例子下载地址:https://wybing.lanzous.com/iesyDoxxi2f

开发环境为:vs2019 | Sql Server 2016 | .NET Framework 4.5

方法三:使用SqlCommandBuilder实现批量修改

源代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
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 static string connString = @"Data Source=.;Initial Catalog=test;Integrated Security=True";
        public Form1()
        {
            InitializeComponent();
        }

        SqlDataAdapter dapt = null;
        DataSet ds = null;

        /// 
        /// 实现批量修改
        /// 优点:功能强大、操作简单、代码简洁
        /// 缺点:只能操作一个表,操作的数据集必须包含主键
        /// 
        /// 
        /// 
        private void btnUpdate_Click(object sender, EventArgs e)
        {
            SqlCommandBuilder builder = new SqlCommandBuilder(dapt);
            // Update()方法自动更新ds到数据库
            dapt.Update(ds);
            MessageBox.Show("修改成功!");
        }

        private void Form1_Load(object sender, EventArgs e)
        { 
            string sql = "select * from stu"; // SQL语句
            SqlConnection conn = new SqlConnection(connString); //  //Sql链接类的实例化
            dapt = new SqlDataAdapter(sql, conn); // //创建DataAdapter数据适配器实例
            ds = new DataSet(); //创建DataSet实例
            dapt.Fill(ds); // //使用DataAdapter的Fill方法(填充),调用SELECT命令
            // DataSet相当于一个离线的数据库,DataTable相当于一个数据表
            DataTable table = ds.Tables[0]; // 将DataSet的一个表给DataTable
            this.dataGridView1.DataSource = table;//给DataGridView绑定数据源
        }
    }
}


参考文章地址:https://www.cnblogs.com/danmao/p/3871650.html
参考百度百科:https://baike.baidu.com/item/SqlCommandBuilder/250793?fr=aladdin

此例子下载地址:https://wybing.lanzous.com/i7pMNoxzuzc

开发环境为:vs2019 | Sql Server 2016 | .NET Framework 4.5

  • SqlCommandBuilder:c#中用来批量更新数据库,一般结合adapter使用。
  • SqlDataAdapter:DataSet和 SQL Server之间的桥接器。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/983934.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号