当前位置: 首页 > news >正文

C# WinForm 数据库增删改查 超级完整版

一、准备工作

  1. 安装SQL Server
  2. 创建数据库 + 表
  3. WinForm 拖入:
    • DataGridView(显示数据)
    • TextBox(输入)
    • Button(增删改查)

二、引入命名空间(必须写)

using System.Data; using System.Data.SqlClient;

三、数据库连接字符串(最关键)

// Windows 身份验证 string connStr = "Data Source=.;Initial Catalog=你的数据库名;Integrated Security=True"; // SQL Server 账号密码登录 string connStr = "Data Source=.;Initial Catalog=你的数据库名;User ID=sa;Password=123456";

四、【查】查询所有数据(加载到 DataGridView)

最常用、最基础

private void btnSelect_Click(object sender, EventArgs e) { using (SqlConnection conn = new SqlConnection(connStr)) { conn.Open(); string sql = "SELECT * FROM 表名"; SqlDataAdapter sda = new SqlDataAdapter(sql, conn); DataTable dt = new DataTable(); sda.Fill(dt); dataGridView1.DataSource = dt; } }

五、【增】添加数据(安全版,防 SQL 注入)

private void btnAdd_Click(object sender, EventArgs e) { string name = txtName.Text; string age = txtAge.Text; using (SqlConnection conn = new SqlConnection(connStr)) { conn.Open(); // 安全写法:参数化,绝不拼接SQL! string sql = "INSERT INTO 表名(Name,Age) VALUES(@Name,@Age)"; SqlCommand cmd = new SqlCommand(sql, conn); cmd.Parameters.AddWithValue("@Name", name); cmd.Parameters.AddWithValue("@Age", age); int rows = cmd.ExecuteNonQuery(); if (rows > 0) MessageBox.Show("添加成功!"); else MessageBox.Show("添加失败!"); } // 刷新表格 btnSelect_Click(null, null); }

六、【改】修改数据

private void btnUpdate_Click(object sender, EventArgs e) { string id = txtId.Text; string name = txtName.Text; string age = txtAge.Text; using (SqlConnection conn = new SqlConnection(connStr)) { conn.Open(); string sql = "UPDATE 表名 SET Name=@Name,Age=@Age WHERE Id=@Id"; SqlCommand cmd = new SqlCommand(sql, conn); cmd.Parameters.AddWithValue("@Id", id); cmd.Parameters.AddWithValue("@Name", name); cmd.Parameters.AddWithValue("@Age", age); int rows = cmd.ExecuteNonQuery(); if (rows > 0) MessageBox.Show("修改成功!"); } btnSelect_Click(null, null); }

七、【删】删除数据

private void btnDelete_Click(object sender, EventArgs e) { string id = txtId.Text; using (SqlConnection conn = new SqlConnection(connStr)) { conn.Open(); string sql = "DELETE FROM 表名 WHERE Id=@Id"; SqlCommand cmd = new SqlCommand(sql, conn); cmd.Parameters.AddWithValue("@Id", id); int rows = cmd.ExecuteNonQuery(); if (rows > 0) MessageBox.Show("删除成功!"); } btnSelect_Click(null, null); }

八、点击 DataGridView 自动填充到文本框

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e) { if (e.RowIndex >= 0) { DataGridViewRow row = dataGridView1.Rows[e.RowIndex]; txtId.Text = row.Cells["Id"].Value.ToString(); txtName.Text = row.Cells["Name"].Value.ToString(); txtAge.Text = row.Cells["Age"].Value.ToString(); } }

九、核心知识点(新手必背)

1.SqlConnection→ 连接数据库

2.SqlCommand→ 执行 SQL 语句

3.SqlDataAdapter→ 填充表格

4.Parameters防 SQL 注入,必须用!

5.ExecuteNonQuery()→ 执行增删改

6.ExecuteScalar()→ 查询单个值

7.using→ 自动关闭连接


十、新手最容易犯的 4 个错

  1. 拼接 SQL 字符串→ 必被注入
  2. 忘记 Open 连接→ 报错
  3. 不写 using→ 连接泄漏
  4. 字段名写错→ 运行不显示数据

十一、一句话总结(可做博客金句)

C# WinForm 数据库增删改查 = 连接 → 写 SQL → 参数化 → 执行 → 刷新表格简单、稳定、安全,项目开发必备!

http://www.zskr.cn/news/1417234.html

相关文章:

  • 164、运动控制中的测试:带宽与稳定性分析
  • 图解人工智能(40)人工智能应用-AI美颜
  • 基于Arduino与红外遥控的智能语音鱼改造:嵌入式系统综合实践
  • MKS RPS AX7657-85 故障分析与可能解决方案
  • 别再乱改grub了!保姆级教程:用tuned在CentOS 7/8上优雅隔离CPU核心(附实时性调优配置)
  • 基于RP2040的硬件定义与软件定义CPU融合设计实践
  • 2026年国产多参数水质分析仪十大品牌深度排名:技术实力、行业渗透率与服务能力全景解析 - 液体流量液位品牌推荐
  • windows上的codex安装后无法使用应用内的浏览器
  • 监控局域网的软件有哪些?实用PC端大盘点!企业都在用
  • 百度竞价代运营网络推广哪家强?2026年靠谱服务商排名与选型指南 - GEO优化
  • CAXA 尺寸驱动
  • 从0到63%:Gemini企业客户30日留存跃迁路径(含Prompt工程×会话记忆×状态持久化三重加固)
  • 2026权威实测:16款降AIGC软件横评,论文安全过关就靠它!
  • 硬件工程师别只懂技术,职场思维同样重要
  • 2026 排烟防火阀厂家推荐盘点:3C 全认证 + GB15930-2024合规 - 资讯快报
  • 基于Arduino与NRF24L01的厨房油烟机智能联动控制系统设计与实现
  • Arduino驱动MAX7219点阵屏:从SPI通信原理到动态显示实战
  • 2026国内全域线上推广头部服务商评测:从技术到转化的全方位对决 - GEO优化
  • 【TSP问题】基于遗传算法GA求解TSP问题附Matlab代码
  • 仅限首批200位架构师获取:Claude原生消息队列设计规范V2.1(含OpenTelemetry埋点模板+Schema Registry治理策略)
  • 基于Arduino与蓝牙模块的无线LCD显示系统:从串口通信到物联网终端实践
  • Veo 2超分重建失效真相(RAW域预处理黑箱深度拆解):实测显示Luma权重偏移超17.3%即触发细节坍缩
  • 为你的代码助手切换稳定后端,Claude Code 接入 Taotoken 配置指南
  • Arduino驱动WS2812制作彩虹氛围灯:从硬件搭建到FastLED编程全解析
  • 基于Arduino与红外传感器的非接触式数字转速计设计与实现
  • 日志与生活:技术人如何从日志中汲取生活智慧
  • 做跨境电商还在一张张手动改图?AI批量图片翻译帮你把效率提升10倍
  • 重学Qt——串口编程
  • SolidWorks_草图绘制9_草图性能优化
  • 【零基础部署】Docker 部署 Nginx + SSL 保姆级教程