1.DataTable 常见用法
在 .NET 中,DataTable 是一个用于存储和操作数据的对象。它通常被用来表示内存中的一个表格,类似于数据库中的表,以下是一些使用 DataTable 的常见情况:
- 数据存储和处理:DataTable 可以用来存储和操作数据,比如增删改查。你可以将数据从
数据库
、Excel
或其他数据源中检索到 DataTable 中,然后对其进行导出等处理 - 数据绑定:DataTable 可以与各种界面控件(如
DataGrid
、GridView
)进行数据绑定 - 缓存数据:如果你需要在应用程序中频繁访问相同的数据,可以
使用 DataTable 将数据缓存在内存中
。这样可以避免每次都从数据库或其他数据源中重新获取数据,提高应用程序的性能 - 数据转换:DataTable 提供了一些方法和属性,可以方便地对数据进行转换和处理。你可以使用 DataTable 进行数据
筛选、排序、分组和聚合等操作
2.DataTable 的增删改查操作示例
using System;
using System.Data;
namespace TestDataTable
{
class Program
{
static void Main(string[] args)
{
// 获取 DataTable
var dataTable = GetDataTable();
// 查看表中的数据
Console.WriteLine("\t---------获取数据如下-----------");
ShowDataTable(dataTable);
UpdateDataRow(dataTable);
// 查看表中的数据
Console.WriteLine("\t---------更新后数据如下-----------");
ShowDataTable(dataTable);
// 删除数据
RemoveDataRow(dataTable);
// 再次查看数据
Console.WriteLine("\t---------删除后数据如下-----------");
ShowDataTable(dataTable);
}
/// <summary>
/// 获取 DataTable
/// </summary>
/// <returns></returns>
public static DataTable GetDataTable()
{
DataTable dataTable = new DataTable();
// 给 dataTable 对象添加列
dataTable.Columns.Add("Id", typeof(string));
dataTable.Columns.Add("Name", typeof(string));
dataTable.Columns.Add("Age", typeof(int));
// 给表中添加数据
dataTable.Rows.Add(new object[] { "1", "zjp", 18 });
dataTable.Rows.Add(new object[] { "2", "lyh", 18 });
dataTable.Rows.Add(new object[] { "3", "ljh", 20 });
dataTable.Rows.Add(new object[] { "4", "tym", 23 });
dataTable.Rows.Add(new object[] { "5", "dxz", 24 });
return dataTable;
}
/// <summary>
/// 显示 dataTable 中的数据
/// </summary>
/// <param name="dataTable"></param>
public static void ShowDataTable(DataTable dataTable)
{
if (dataTable == null)
{
return;
}
foreach (DataColumn column in dataTable.Columns) // 列的名称
{
Console.Write("\t{0}", column.ColumnName);
}
Console.WriteLine();
foreach (DataRow row in dataTable.Rows)
{
foreach (DataColumn column in dataTable.Columns)
{
Console.Write("\t{0}", row[column]); // 列数据
}
Console.WriteLine();
}
Console.WriteLine();
}
/// <summary>
/// 删除数据
/// </summary>
/// <param name="dataTable"></param>
public static void RemoveDataRow(DataTable dataTable)
{
if (dataTable != null)
{
dataTable.Rows.RemoveAt(0); // 通过索引删除第一条数据
DataRow[] dataRows = dataTable.Select("Id = 2"); // 通过筛选条件删除行
foreach (var row in dataRows)
{
dataTable.Rows.Remove(row);
}
}
}
/// <summary>
/// 更新数据
/// </summary>
/// <param name="dataTable"></param>
public static void UpdateDataRow(DataTable dataTable)
{
if (dataTable != null)
{
var dataRows = dataTable.Select("Id = 5");// 获取 Id 为 5 的数据行
foreach(var row in dataRows)
{
row["Age"] = "100";
}
}
}
}
}
3.其他
虽然在 .NET 中,DataTable 仍然是一个可用的数据结构,但在实际应用中,其使用率相对较低,一般是旧有的代码和遗留系统中可能仍然使用 DataTable
- 引入了其他更先进的数据访问技术:随着时间的推移,.NET 平台引入了更先进的数据访问技术,例如
Entity Framework、LINQ to SQL、Dapper 等
。这些技术提供了更方便、更高效的数据访问方式,比直接使用 DataTable 更加现代化。 - 对象关系映射(ORM)的普及:
ORM 框架
(例如 Entity Framework)的普及使得开发人员更倾向于使用对象模型来处理数据
,而不是传统的关系型数据表格。ORM 框架能够将数据库表映射为对象,提供了更加面向对象的编程体验
。