ADO.NET是.NET Framework中用于和数据源交互的一组类库,它提供了对SQL Server等数据库的统一访问方式,支持开发者完成各类数据操作需求。核心组件包含SqlConnection、SqlCommand、SqlDataReader等,通过这些组件可以高效实现数据库的交互逻辑。

环境准备与基础配置
首先需要在项目中引入System.Data.SqlClient命名空间,如果是.NET Core及以上版本,需要安装Microsoft.Data.SqlClient NuGet包。操作前需要准备SQL Server数据库的连接字符串,基础格式如下:
// 连接字符串示例,需替换为实际的数据库信息 string connectionString = "Server=127.0.0.1;Database=TestDB;User Id=sa;Password=123456;";
建立数据库连接
所有数据库操作的第一步都是建立有效的连接,使用SqlConnection类完成连接创建和打开,操作完成后需要及时释放资源,推荐使用using语句自动管理资源生命周期。
using System.Data.SqlClient;
// 创建连接对象
using (SqlConnection conn = new SqlConnection(connectionString))
{
try
{
// 打开连接
conn.Open();
Console.WriteLine("数据库连接成功");
}
catch (Exception ex)
{
Console.WriteLine($"数据库连接失败:{ex.Message}");
}
}
新增(Insert)操作
新增操作用于向数据表中插入新的数据记录,通过SqlCommand对象执行INSERT语句实现,执行后可以通过ExecuteNonQuery方法获取受影响的行数。
using (SqlConnection conn = new SqlConnection(connectionString))
{
conn.Open();
// 新增SQL语句,假设存在User表,包含Id、Name、Age字段
string insertSql = "INSERT INTO User (Name, Age) VALUES (@Name, @Age)";
using (SqlCommand cmd = new SqlCommand(insertSql, conn))
{
// 添加参数,避免SQL注入
cmd.Parameters.AddWithValue("@Name", "张三");
cmd.Parameters.AddWithValue("@Age", 25);
// 执行命令,返回受影响的行数
int rows = cmd.ExecuteNonQuery();
Console.WriteLine($"新增成功,受影响行数:{rows}");
}
}
查询(Select)操作
查询操作用于从数据表中获取符合条件的数据,分为单行查询和多行查询两种场景,单行查询使用ExecuteScalar方法,多行查询使用SqlDataReader遍历结果。
单行查询示例
using (SqlConnection conn = new SqlConnection(connectionString))
{
conn.Open();
// 查询用户总数
string selectSingleSql = "SELECT COUNT(*) FROM User";
using (SqlCommand cmd = new SqlCommand(selectSingleSql, conn))
{
// 执行查询,返回单个值
object result = cmd.ExecuteScalar();
Console.WriteLine($"用户总数:{result}");
}
}
多行查询示例
using (SqlConnection conn = new SqlConnection(connectionString))
{
conn.Open();
// 查询所有用户
string selectMultiSql = "SELECT Id, Name, Age FROM User";
using (SqlCommand cmd = new SqlCommand(selectMultiSql, conn))
{
// 获取读取器
using (SqlDataReader reader = cmd.ExecuteReader())
{
// 遍历结果
while (reader.Read())
{
int id = reader.GetInt32(0);
string name = reader.GetString(1);
int age = reader.GetInt32(2);
Console.WriteLine($"Id:{id}, 姓名:{name}, 年龄:{age}");
}
}
}
}
修改(Update)操作
修改操作用于更新数据表中已有的记录,通过UPDATE语句配合ExecuteNonQuery方法实现,同样需要使用参数化查询避免SQL注入问题。
using (SqlConnection conn = new SqlConnection(connectionString))
{
conn.Open();
// 修改指定Id的用户年龄
string updateSql = "UPDATE User SET Age = @Age WHERE Id = @Id";
using (SqlCommand cmd = new SqlCommand(updateSql, conn))
{
cmd.Parameters.AddWithValue("@Age", 26);
cmd.Parameters.AddWithValue("@Id", 1);
int rows = cmd.ExecuteNonQuery();
Console.WriteLine($"修改成功,受影响行数:{rows}");
}
}
删除(Delete)操作
删除操作用于移除数据表中符合条件的记录,通过DELETE语句执行,执行后返回受影响的行数,操作前需要确认条件是否正确,避免误删数据。
using (SqlConnection conn = new SqlConnection(connectionString))
{
conn.Open();
// 删除指定Id的用户
string deleteSql = "DELETE FROM User WHERE Id = @Id";
using (SqlCommand cmd = new SqlCommand(deleteSql, conn))
{
cmd.Parameters.AddWithValue("@Id", 1);
int rows = cmd.ExecuteNonQuery();
Console.WriteLine($"删除成功,受影响行数:{rows}");
}
}
注意事项
- 所有数据库操作都需要做好异常处理,避免程序崩溃
- 必须使用参数化查询,不要直接拼接SQL字符串,防止SQL注入攻击
- 数据库连接、命令、读取器等资源都需要及时释放,优先使用using语句管理
- 执行查询操作前需要确认连接已经打开,否则会抛出异常
ADO.NETSQL_Server增删改查数据库连接修改时间:2026-06-23 09:33:31