答案:DataAdapter通过Fill方法将数据库数据填充到DataSet中,DataSet作为内存数据容器支持多表离线操作,结合SqlDataAdapter可实现数据读取与更新。

在C#中,DataAdapter 和 DataSet 常用于从数据库读取数据并进行离线操作。DataAdapter 充当数据库和 DataSet 之间的桥梁,通过 Fill 方法将查询结果填充到 DataSet 中。
基本流程说明
使用 SqlDataAdapter(以 SQL Server 为例)执行 SELECT 命令,把数据填充到 DataSet 的 DataTable 中。DataSet 可包含多个表,适合处理多表查询或关联数据。
示例代码:使用 SqlDataAdapter 和 DataSet
以下是一个完整的控制台应用程序示例,展示如何连接 SQL Server 数据库并填充数据:
var connectionString = "Server=localhost;Database=TestDB;User Id=sa;Password=your_password;";
var query = "SELECT Id, Name, Email FROM Users";
using (var connection = new SqlConnection(connectionString))
{
using (var adapter = new SqlDataAdapter(query, connection))
{
var dataSet = new DataSet();
adapter.Fill(dataSet, "Users");
// 遍历数据
foreach (DataRow row in dataSet.Tables["Users"].Rows)
{
Console.WriteLine($"ID: {row["Id"]}, Name: {row["Name"]}, Email: {row["Email"]}");
}
}
}
关键点说明
-
SqlConnection 负责数据库连接,由 SqlDataAdapter 内部管理打开和关闭。
-
SqlDataAdapter 可设置 SelectCommand,也可直接传入 SQL 字符串和连接对象。
-
Fill() 方法执行查询并将结果写入 DataSet 的指定表名中。
-
DataSet 是内存中的数据容器,支持多表、关系和约束。
- 即使连接关闭,DataSet 仍可访问数据,适用于断开式数据操作。
补充:更新数据回数据库
如果需要将修改后的 DataSet 数据写回数据库,需配置 InsertCommand、UpdateCommand 和 DeleteCommand:
var updateCommand = new SqlCommand("UPDATE Users SET Name=@Name, Email=@Email WHERE Id=@Id", connection);
updateCommand.Parameters.Add("@Name", SqlDbType.NVarChar, 50, "Name");
updateCommand.Parameters.Add("@Email", SqlDbType.NVarChar, 100, "Email");
updateCommand.Parameters.Add("@Id", SqlDbType.Int, 4, "Id");
adapter.UpdateCommand = updateCommand;
adapter.Update(dataSet, "Users"); // 将 DataSet 中的变更提交到数据库
基本上就这些。DataAdapter + DataSet 虽然较老,但在需要缓存、批量操作或离线处理时依然实用。