DataSet 对象
DataSet 对象 最常指 ADO.NET(.NET)中的 DataSet,用于在内存中缓存数据。
基本概念#
DataSet 是一个内存中的数据容器,独立于数据库连接,可以包含多张表、表间关系和数据约束。它在断开连接(Disconnected)模式下工作,非常适合多层应用和 Web 场景。
主要组成#
| 对象 | 说明 |
|---|---|
DataTable | 一张内存数据表(行、列的集合) |
DataRow / DataColumn | 表中的行与列定义 |
DataRelation | 表与表之间的父子关系(如外键) |
Constraint | 唯一约束、外键约束 |
DataView | 对 DataTable 的排序/筛选视图 |
基本用法(C# 示例)#
// 1. 填充
using (var conn = new SqlConnection(connStr))
{
var adapter = new SqlDataAdapter("SELECT * FROM Users", conn);
var ds = new DataSet();
adapter.Fill(ds, "Users"); // DataSet 里出现名为 Users 的表
}
// 2. 读取
DataTable table = ds.Tables["Users"];
foreach (DataRow row in table.Rows)
{
Console.WriteLine(row["Name"]);
}
// 3. 增删改后回写数据库
DataRow newRow = table.NewRow();
newRow["Name"] = "张三";
table.Rows.Add(newRow);
adapter.Update(ds); // 需要配置 InsertCommand/UpdateCommand/DeleteCommandcsharp特点#
- ✅ 驻留内存,可序列化(XML、二进制),支持跨层传输
- ✅ 支持离线编辑,之后批量提交回数据库
- ✅ 可维护表间关系和约束,类似”内存中的小数据库”
- ❌ 比
DataReader占内存多、性能略低(不适合只读遍历大数据) - ❌ 现在新项目多用 Entity Framework Core 等 ORM,DataSet 主要维护在老项目中