C#使用SqlConnection实现SQL Server数据库增删改查示例

季宁
季宁
发布时间:2026-10-14| 4人浏览过
原创

在C#应用程序开发中,与SQL Server数据库进行交互是常见的核心需求。本文通过一个完整的Windows Forms示例,展示如何利用ADO.NET组件(如SqlConnection、SqlCommand)编写高效的增删改查(CRUD)代码,涵盖从建立连接到执行SQL语句的完整流程。

环境准备与连接配置

在进行数据库操作前,需确保已引入必要的命名空间,主要包括 System.Data.SqlClient 用于数据库连接,以及界面交互所需的 System.Windows.Forms。核心的连接参数通常定义为一个字符串,包含服务器地址、用户ID、密码及目标数据库名。

using System;
using System.Data;
using System.Data.SqlClient;
// ... 其他UI相关命名空间

namespace WindowsFormsApplication1
{
  public partial class Form1 : Form
  {
    // 连接字符串定义:server=IP地址;uid=用户名;pwd=密码;database=库名
    private string GetConnectionString()
    {
      return "server=127.0.0.1;uid=sa;pwd=123654;database=libbook;Trusted_Connection=no";
    }
    // ... 方法实现见下文
  }
}

第1步:执行数据查询

查询操作通常涉及将数据库返回的结果集绑定到UI控件(如DataGrid)。以下代码展示了如何通过 SqlDataAdapter 填充 DataSet 并刷新界面。

  1. 目的:获取 图书借阅 表中的所有记录。
  2. 入口:按钮点击事件 button1_Click。
  3. 动作:
    • 初始化连接对象 SqlConnection 并打开连接。
    • 创建 SqlCommand 指定 SELECT * FROM 图书借阅 命令。
    • 使用 SqlDataAdapter 的 Fill 方法将数据载入 DataSet。
    • 设置 DataGrid1.DataSource 显示第一张表。
  4. 注意:原代码示例中存在 SelectAdapter.SelectCommand.ExecuteNonQuery() 调用,该API主要用于非查询类SQL(如INSERT/UPDATE),在纯SELECT场景下不应直接调用,应依赖 Fill 方法获取数据。

运行后,若连接成功,界面上的数据网格将展示当前表的内容:

C# WinForm应用成功渲染查询数据:

第2步:执行数据添加(Insert)

向表中插入新记录时,需注意主键约束。如果 借阅编号 被设置为自增列(IDENTITY),则不应在SQL语句中手动赋值,否则会导致错误。

正常插入流程

针对除主键外的其他字段(如图书编号、读者编号),通过拼接变量构建 INSERT 语句:

string MyInsert = "insert into 图书借阅 (图书编号,读者编号,续借次数) values ('"
+ Convert.ToString(textBox2.Text)
+ "','" + Convert.ToString(textBox3.Text)
+ "','"+Convert.ToInt32(textBox4.Text)+ "')";

当执行此操作时,数据库会自动生成下一条 借阅编号:

插入异常排查

如果在插入数据时指定了不存在的关联值(如引用了不存在的图书编号),可能会触发外键约束或业务逻辑错误。例如,尝试插入不存在的外键值导致出错:

修正数据后,再次执行插入操作可看到成功提示或数据刷新:

第3步:执行数据更新(Update)

更新操作通过 UPDATE 语句修改特定行的字段值。关键是要准确编写 WHERE 子句,防止误修多行数据。

本例演示如何将某条记录的 操作员 字段修改为“王老师”,条件匹配对应的 借阅编号:

string MyUpdate = "Update 图书借阅 set 操作员='" + textBox2.Text + "' where 借阅编号='" + textBox1.Text + "'";

执行成功后,数据库内容即发生相应变更:

第4步:执行数据删除(Delete)

删除记录同样需要谨慎使用 DELETE 语句配合明确的 WHERE 条件。在执行前建议备份重要数据。

本例演示删除 借阅编号 为31的记录:

string MyDelete = "Delete from 图书借阅 where 借阅编号=" + textBox1.Text;

执行完毕后,该条记录将从表中移除:

排错与建议

  • SQL注入风险:上述示例为了直观展示原理,使用了字符串拼接方式构建SQL语句。在实际生产环境中,务必使用 SqlParameter 进行参数化查询,以防御SQL注入攻击。
  • 资源管理:示例中手动调用了 Open() 和 Close()。建议在代码中使用 using 语句包裹 SqlConnection,确保即使发生异常也能自动释放连接资源。
  • 事务处理:对于涉及多个步骤的复杂操作(如转账、批量插入),应引入 SqlTransaction 以保证数据的一致性。

以上就是C#访问SQL Server数据库进行增删改查的详细内容,更多关于C#数据库编程的资料请关注本站其它相关文章!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。