C# WinForm DataGridView 数据库绑定与数据更新

林见深
林见深
发布时间:2026-10-15 | 4人浏览过
原创

在使用 C# WinForm 开发桌面应用时,经常需要将数据库中的数据以表格形式展示并支持编辑保存。通过 Visual Studio 内置的数据集设计器,可以无需编写复杂 ADO.NET 代码即可实现 DataGridView 与 SQL Server 数据库的双向绑定。

准备条件:建立数据库

首先确保已在 SQL Server 中创建好目标数据库及数据表。假设我们有一个名为 LaserSystem 的数据库,其中包含一张 MARK_TEMPLATE 表,该表将作为后续演示的数据源。

创建 Windows 窗体应用与数据集

在 Visual Studio 中创建一个新的 WinForm 项目。为了使用强类型数据集进行便捷的数据操作,需要在项目中添加一个“数据集”项(.xsd 文件)。

第 1 步:配置 TableAdapter

打开刚创建的数据集设计界面(如 DataSet1.xsd),从左侧工具箱中拖入一个 TableAdapter 组件到设计视图中。这将启动配置向导:

  1. 选择连接对象:如果已有连接字符串可选现成连接,或点击“新建连接”指向本地 SQL Server 实例和 LaserSystem 数据库。完成后点击“下一步”。

  2. 指定查询方法:选择“使用标准存储过程”或者直接使用向导生成的查询。这里建议直接生成对应的 SELECT/INSERT/UPDATE/DELETE 语句。

  3. 选择数据表:
    在弹出的对话框中选择“查询生成器”,在左侧列表中找到 MARK_TEMPLATE 表并将其添加到右侧查询区域。
  1. 选择列字段:在查询设计器中选中所有需要的列(勾选 * 全选),然后点击确定。系统将自动为选中的表生成 CRUD(增删改查)命令。

  2. 完成配置:一路点击“下一步”直至“完成”。此时,数据集中会新增对应表的映射结构,并在设计器右下角生成一个命名为 MARK_TEMPLATETableAdapter 的组件实例。

界面设计与数据绑定

回到主窗体设计视图(例如 Form1.cs [设计])。我们需要从工具箱中依次拖入以下关键组件,它们将显示在窗体底部的托盘区域:

  1. DataGridView:用于展示数据表格。
  2. BindingSource:作为数据源与 UI 控件之间的中间件,负责处理数据导航和更新状态。
  3. DataSet/TableAdapter 组件:即上一步生成的 dataSet11 和 marK_templateTableAdapter1。

第 2 步:配置 BindingSource 关联

这是绑定的核心步骤,请按照以下顺序操作属性设置:

  1. 选中窗体上的 bindingSource1 组件(或在属性窗口操作)。
  2. 找到属性 DataSource,在下拉菜单中选择当前数据集(dataSet11),并继续展开选择具体的数据表名称 MARK_TEMPLATE。

    这一步建立了内存数据集与物理表结构的逻辑映射。

  3. 选中主界面上的 dataGridView1 控件。
  4. 在属性窗口中将 DataSource 设置为 bindingSource1。

    此时 DataGridView 会自动根据数据表生成对应的列头,你可以在属性中进一步调整列的 Visible、HeaderText 等显示样式。

编写逻辑代码实现读写

最后需要编写少量代码来完成初始数据加载和用户修改后的保存操作。在窗体上添加一个 Button(例如命名为 button1)用于保存更新,以及处理窗体的 Load 事件。

加载数据

双击窗体空白处进入 Load 事件,在窗体初始化时填充数据:

private void MainForm_Load(object sender, EventArgs e)
{
    // Fill 方法底层会调用 SqlDataAdapter.Fill,将数据库数据读入 DataSet
this.marK_templateTableAdapter1.Fill(this.dataSet11.MARK_TEMPLATE); }

保存更改

为保存按钮编写点击事件。当用户在 DataGridView 中修改单元格内容时,这些数据仅存在于客户端内存中,必须显式调用更新方法才能写回数据库:

private void button1_Click(object sender, EventArgs e)
{
    // 1. 结束当前行的编辑状态,确保 DataGridView 提交最新值到 BindingSource
    this.bindingSource1.EndEdit();
    
    // 2. 可选:如果是多个 TableAdapter 混用场景,需正确分配管理器
// this.tableAdapterManager1.UpdateAll 内部会自动管理事务和外键约束顺序 // 3. 将内存中对 dataSet 的修改同步回数据库 this.tableAdapterManager1.UpdateAll(this.dataSet11); }

运行程序后,窗体会自动从 SQL Server 读取 MARK_TEMPLATE 表的数据显示在网格中。修改任意单元格后点击保存按钮,返回数据库验证,确认数据已持久化。

以上就是 C# WinForm 中利用 DataSet 绑定 DataGridView 的详细教程,更多关于 C# 数据库交互的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表