本书系统讲解C语言高效操作SQL Server数据库的核心技术,从基础到实践全面覆盖,内容涵盖数据库连接、CRUD操作、事务管理、存储过程调用等基础操作,深入剖析批量数据处理、连接池优化、索引策略、异常处理等高效实践技巧,帮助开发者掌握性能调优与稳定运维方法,通过实例演示将理论知识转化为实战能力,提升数据库操作效率与系统可靠性。
在 .NET 生态系统中,C# 作为核心编程语言,与 SQL Server 数据库的集成是企业级应用开发的重要场景,无论是简单的数据存取,还是复杂的事务处理,掌握 C# 操作 SQL Server 的方法都是开发者的必备技能,本文将从环境准备、基础操作到高级实践,逐步讲解如何使用 C# 高效操作 SQL Server 数据库。
准备工作:环境与工具配置
在开始编码前,需完成以下准备工作:
开发环境安装
- Visual Studio:推荐使用 Visual Studio 2022(支持 .NET 6/7/8 等最新版本)。
- SQL Server:安装 SQL Server 2019 或更高版本(可使用 Express 免费版),并确保 SQL Server 服务正在运行。
- NuGet 包:在项目中安装
Microsoft.Data.SqlClient(微软官方推荐的 SQL Server 数据访问库,替代过时的System.Data.SqlClient)。
创建示例数据库与表
以 SQL Server Management Studio (SSMS) 为例,执行以下 T-SQL 脚本创建测试数据库 StudentDB 和 Student 表:

CREATE DATABASE StudentDB;
GO
USE StudentDB;
GO
CREATE TABLE Student (
ID INT PRIMARY KEY IDENTITY(1,1),
Name NVARCHAR(50) NOT NULL,
Age INT,
Gender NVARCHAR(10),
EnrollmentDate DATE DEFAULT GETDATE()
);
GO
-- 插入测试数据
INSERT INTO Student (Name, Age, Gender) VALUES
('张三', 20, '男'),
('李四', 22, '女'),
('王五', 21, '男');
GO
C# 操作 SQL Server 基础:连接与简单 CRUD
建立数据库连接
操作 SQL Server 的第一步是建立连接,核心是 SqlConnection 类和连接字符串,连接字符串包含服务器地址、数据库名、认证信息等,常见格式如下:
// 示例连接字符串(Windows 身份验证) string connectionString = "Server=.;Database=StudentDB;Integrated Security=True;TrustServerCertificate=True"; // 示例连接字符串(SQL Server 身份验证) // string connectionString = "Server=.;Database=StudentDB;User Id=sa;Password=YourPassword;TrustServerCertificate=True";
注意:TrustServerCertificate=True 用于跳过证书验证(开发环境可用),生产环境需配置 SSL 证书。
使用 SqlConnection 建立连接时,推荐通过 using 语句自动释放资源:
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
Console.WriteLine("数据库连接成功!");
}
执行查询操作(SELECT)
查询数据需使用 SqlCommand 和 SqlDataReader,以下示例查询所有学生信息:
string query = "SELECT ID, Name, Age, Gender FROM Student";
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
using (SqlCommand command = new SqlCommand(query, connection))
{
using (SqlDataReader reader = command.ExecuteReader())
{
Console.WriteLine("学生列表:");
while (reader.Read()) // 逐行读取数据
{
int id = reader.GetInt32(0); // 通过列索引获取(从0开始)
string name = reader.GetString(1);
int age = reader.IsDBNull(2) ? 0 : reader.GetInt32(2); // 处理NULL值
string gender = reader.GetString(3);
Console.WriteLine($"ID: {id}, 姓名: {name}, 年龄: {age}, 性别: {gender}");
}
}
}
}
输出结果:
学生列表:
ID: 1, 姓名: 张三, 年龄: 20, 性别: 男
ID: 2, 姓名: 李四, 年龄: 22, 性别: 女
ID: 3, 姓名: 王五, 年龄: 21, 性别: 男
执行非查询操作(INSERT/UPDATE/DELETE)
非查询操作(增删改)使用 SqlCommand.ExecuteNonQuery() 方法,返回受影响的行数。
示例1:插入数据
string insertSql = "INSERT INTO Student (Name, Age, Gender) VALUES (@Name, @Age, @Gender)";
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
using (SqlCommand command = new SqlCommand(insertSql, connection))
{
// 参数化查询(防止SQL注入)
command.Parameters.AddWithValue("@Name", "赵六");
command.Parameters.AddWithValue("@Age", 23);
command.Parameters.AddWithValue("@Gender", "女");
int rowsAffected = command.ExecuteNonQuery();
Console.WriteLine($"插入成功,影响行数: {rowsAffected}");
}
}
示例2:更新数据
string updateSql = "UPDATE Student SET Age = @Age WHERE Name = @Name";
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
using (SqlCommand command = new SqlCommand(updateSql, connection))
{
command.Parameters.AddWithValue("@Age", 25);
command.Parameters.AddWithValue("@Name", "张三");
int rowsAffected = command.ExecuteNonQuery();
Console.WriteLine($"更新成功,影响行数: {rowsAffected}");
}
}
示例3:删除
文章版权声明:除非注明,否则均为xmsdn原创文章,转载或复制请以超链接形式并注明出处。

