C# 开发Winform DataGridView的增删改查实战

在C# WinForms应用程序中,DataGridView控件是一个非常强大的工具,用于显示和编辑表格数据。下面我将详细介绍如何在WinForm应用程序中使用DataGridView实现基本的数据库操作:增加、删除、修改和查询(CRUD)。

第一步:创建数据库表

首先,你需要一个数据库表来存储数据。假设我们有一个“Employee”表,包含以下字段:

  • ID (int, primary key, auto-increment)
  • Name (varchar)
  • Position (varchar)
  • Salary (decimal)

第二步:设置WinForm项目

  1. 打开Visual Studio,创建一个新的Windows Forms App (.NET Framework)项目。
  2. 在Form上添加一个DataGridView控件。

第三步:连接数据库

使用ADO.NET来连接数据库。在解决方案资源管理器中,右键点击项目 -> 添加 -> 新建项 -> 数据 -> ADO.NET实体数据模型,然后选择你的数据库并创建实体。

第四步:编写CRUD操作

1. 查询数据
 

Csharp

深色版本

1private void LoadData()
2{
3    using (var context = new YourDbContext())
4    {
5        var employees = context.Employees.ToList();
6        dataGridView1.DataSource = employees;
7    }
8}
2. 插入数据
 

Csharp

1private void InsertData(string name, string position, decimal salary)
2{
3    using (var context = new YourDbContext())
4    {
5        var employee = new Employee { Name = name, Position = position, Salary = salary };
6        context.Employees.Add(employee);
7        context.SaveChanges();
8        LoadData(); // 刷新DataGridView
9    }
10}
3. 更新数据
 

Csharp

1private void UpdateData(int id, string name, string position, decimal salary)
2{
3    using (var context = new YourDbContext())
4    {
5        var employee = context.Employees.Find(id);
6        if (employee != null)
7        {
8            employee.Name = name;
9            employee.Position = position;
10            employee.Salary = salary;
11            context.SaveChanges();
12            LoadData(); // 刷新DataGridView
13        }
14    }
15}
4. 删除数据
 

Csharp

1private void DeleteData(int id)
2{
3    using (var context = new YourDbContext())
4    {
5        var employee = context.Employees.Find(id);
6        if (employee != null)
7        {
8            context.Employees.Remove(employee);
9            context.SaveChanges();
10            LoadData(); // 刷新DataGridView
11        }
12    }
13}

第五步:绑定事件

在你的Form中,你可以绑定DataGridView的事件来触发上述方法,例如:

 

Csharp

1private void buttonAdd_Click(object sender, EventArgs e)
2{
3    InsertData(textBoxName.Text, textBoxPosition.Text, decimal.Parse(textBoxSalary.Text));
4}
5
6private void buttonEdit_Click(object sender, EventArgs e)
7{
8    var selectedRow = dataGridView1.SelectedRows[0];
9    int id = Convert.ToInt32(selectedRow.Cells["ID"].Value);
10    string name = selectedRow.Cells["Name"].Value.ToString();
11    string position = selectedRow.Cells["Position"].Value.ToString();
12    decimal salary = Convert.ToDecimal(selectedRow.Cells["Salary"].Value);
13    UpdateData(id, name, position, salary);
14}
15
16private void buttonDelete_Click(object sender, EventArgs e)
17{
18    var selectedRow = dataGridView1.SelectedRows[0];
19    int id = Convert.ToInt32(selectedRow.Cells["ID"].Value);
20    DeleteData(id);
21}

第六步:运行程序

现在,你可以运行你的应用程序,通过按钮来添加、编辑和删除数据了。记得在启动时调用LoadData()方法来初始化DataGridView的数据。

以上步骤和代码提供了一个基础框架,你可以根据具体需求进行调整和扩展。例如,你可能需要添加错误处理、数据验证等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/42961.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【ARM系列】1 of N SPI

1 of N模式 SPI 概述配置流程 概述 GIC-600AE支持1 of N模式SPI。在此模式下可以将SPI target到多个core,并且GIC-600AE可以选择哪些内核接收SPI。 GIC-600AE只向处于powered up 并且使能中断组的core发送SPI。 GIC-600AE会优先考虑那些被认为是active的核&#xf…

小程序 全局数据共享 getApp()

在小程序中,可以通过 getApp() 方法获取到小程序全局唯一的App实例 因此在App() 方法中添加全局共享的数据、方法,从而实现页面、组件的数据传值 在 app.js 文件中定义 App({// 全局共享的数据globalData:{token:},// 全局共享的方法setToken(token){//…

如何创建一个基本的Mojolicious Web应用:探索Perl的现代Web框架

如何创建一个基本的Mojolicious Web应用:探索Perl的现代Web框架 Mojolicious是一个用Perl编写的简单、优雅的Web开发框架,它提供了一套丰富的工具和方法,让开发者能够快速构建高性能的Web应用。本文将详细介绍如何创建一个基本的Mojolicious…

面向对象——继承、封装、多态

什么是面向对象? 面向对象(Object-Oriented Programming,简称OOP)是一种编程范式,它使用“对象”来设计应用程序和计算机程序。OOP的核心概念包括类(Class)、对象(Object&#xff09…

SQL注入基础入门

文章目录 前言SQL注入基本操作SQL注入类型分类数字型字符型搜索型xx型Json型数据类型提交的方式 SQL注入的位置分类报错注入报错注入实战案例 SQL注入语句分类insert注入update注入delete注入 编码Tips:Mysql版本区别information_schema数据库详解 其他注入手段宽字…

面试官:Java线程可以无限创建吗?

1. 面试连环call Java线程可以无限创建吗? Java线程和操作系统线程有什么关联? 操作系统为什么要区分内核态和用户态? ⏩要想解答这些问题,我们要先从操作系统线程开始说起,让我们开始吧🎉🎉🎉 2. 操作系统线程…

为什么要学习Go

本文旨在探讨为什么Go语言值得学习,以及它如何能够提升您的编程技能和职业发展。我们将深入分析Go语言的核心优势,包括其简洁的语法、强大的并发支持、卓越的性能表现,以及在云计算、微服务和系统编程等领域的广泛应用 GO logo的核心理念,即简单胜于复杂。使用现代…

Redis-Redis可视化工具Redis Insight下载及安装

下载 1、博主已经上传资源,点此下载 2、点此进入官方下载 2.1 点击Installing Redis Insight 2.2 点击Install on desktop 2.3 选择Install on desktop,点击Redis Insight is available for download for free from this web site从网站下载 2.4 下载…

大模型简介

文章目录 大模型简介什么是大模型GPT大语言模型发展大语言模型对话产品大模型怎么用 大模型简介 什么是大模型 大模型,全称「大语言模型」,英文「Large Language Model」,缩写「LLM」。是具有大量参数和复杂结构的机器学习模型。大模型通常…

Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO

官网:https://streamlit.io/ github:https://github.com/streamlit/streamlit API 参考:https://docs.streamlit.io/library/api-reference 最全 Streamlit 教程:https://juejin.cn/column/7265946243196436520 Streamlit-中文文档…

MYSQL 四、mysql进阶 7(性能分析工具的使用)

一、数据库服务器的优化步骤 数据库调优流程图: 整个流程划分成了 观察(Show status) 和 行动(Action) 两个部分。字母 S 的部分代表观察(会使 用相应的分析工具),字母 A 代表的部分是行…

算法012:将x减到0的最小操作数

将x减到0的最小操作数. - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/minimum-operations-to-reduce-x-to-zero/ 这个题使用到的是滑动窗口。 乍一看&#xff0c…

U盘管理软件有哪些?3款好用的软件亲测有效!

在数字化办公与数据交换日益频繁的今天,U盘作为便携的存储设备,其重要性不言而喻。 然而,U盘的使用也带来了数据泄露、病毒感染等安全隐患。为了有效管理U盘,确保数据安全与合规性,市场上涌现出了众多U盘管理软件。 小…

大话C语言:第29篇 指针

1 指针概念 指针:地址的变量化形式,其存储的是内存中某个存储单元的地址。它是地址的数值表示。 指针变量:一种特殊的变量,它专门用于存放变量的地址(即指针)。 注意,指针和指针变量的区别&am…

【Linux】线程池|单例模式|STL、智能指针线程安全|读者写者问题

> 作者:დ旧言~ > 座右铭:松树千年终是朽,槿花一日自为荣。 > 目标:理解【Linux】线程池|单例模式|STL、智能指针线程安全|读者写者问题。 > 毒鸡汤:有些事情,总是不明白,所以我不会…

2024 年 07 月编程语言排行榜|Rust 即将进入前十

TIOBE 2024 年 07 月份的编程语言排行榜已经公布,官方的标题是:Rust 即将进入前十(Rust is preparing itself for the top 10)。 Python 继续保持第一,而 C 超越 C 升至第二: 在 TIOBE 7 月编程语言排行榜…

springboot项目怎么样排除自带tomcat容器使用宝蓝德bes web中间件?

前言: 由于Spring Boot 1.x和2.x不兼容,BES提供了对应的Spring Boot Starter版本。 bes‑lite‑spring‑boot‑1.x‑starter.jar,适用于Spring Boot 1.x的版本。 bes‑lite‑spring‑boot‑2.x‑starter…

深度解析:当下流行的人工智能大模型生成逻辑

在过去的几年里,人工智能领域经历了前所未有的革新,其中最引人注目的就是大规模预训练模型的崛起。这些模型,如GPT系列、BERT、T5、DALLE和CLIP等,凭借其强大的语言理解和生成能力,已经在自然语言处理(NLP&…

Dockerfile打包部署常用操作

文章目录 1、Dockerfile部署java程序(jar包)1.1、创建Dockerfile1.2、将Dockerfile和要上传的jar包放到一个目录下,构建镜像1.3、创建启动容器 2、Dockerfile部署vue2.1、创建dockerfile文件2.2、将打包的dist文件放到dockerfile同文件目录下…

《初级C++》(一)

初级C(一) 1: C参考⽂档2:C创建与实现创建C的第一套程序命名空间的理解空间命名的实现C输⼊&输出缺省参数 1: C参考⽂档 https://legacy.cplusplus.com/reference/ 《非官方》 https://zh.cppreference.com/w/cpp 《官方中文版》 https:/…