一、知识点描述
1.定义
    DataTable是一个表示内存中数据的一个表。数据库中存储的是实体表,实体表中有一系列的数据。而DataTable即存储在内存中的表,是可以独立创建和使用的。在持久化到数据库之前,是不会对数据库产生影响的,持久化到数据库可以使用dataAdapter.Update的方法(dataAdapter是某个实例化的DataAdapter对象)。


2.DataTable的对象

    DataTable的对象包括DataSet和DataView。

3.DataTable的属性

 

名称

说明

 

CaseSensitive

指示表中的字符串比较是否区分大小写。

 

ChildRelations

获取此 DataTable 的子关系的集合。

 

Columns

获取属于该表的列的集合。

 

Constraints

获取由该表维护的约束的集合。

 

Container

获取组件的容器。 (继承自 MarshalByValueComponent。)

 

DataSet

获取此表所属的 DataSet。

 

DefaultView

获取可能包括筛选视图或游标位置的表的自定义视图。

 

DesignMode

获取指示组件当前是否处于设计模式的值。 (继承自 MarshalByValueComponent。)

 

DisplayExpression

获取或设置一个表达式,该表达式返回的值用于表示用户界面中的此表。 DisplayExpression 属性用于在用户界面中显示此表的名称。

 

Events

获取附加到该组件的事件处理程序的列表。 (继承自 MarshalByValueComponent。)

 

ExtendedProperties

获取自定义用户信息的集合。

 

HasErrors

获取一个值,该值指示该表所属的 DataSet 的任何表的任何行中是否有错误。

 

IsInitialized

获取一个值,该值指示是否已初始化 DataTable。

 

Locale

获取或设置用于比较表中字符串的区域设置信息。

 

MinimumCapacity

获取或设置该表最初的起始大小。

 

Namespace

获取或设置 DataTable 中所存储数据的 XML 表示形式的命名空间。

 

ParentRelations

获取该 DataTable 的父关系的集合。

 

Prefix

获取或设置 DataTable 中所存储数据的 XML 表示形式的命名空间。

 

PrimaryKey

获取或设置充当数据表主键的列的数组。

 

RemotingFormat

获取或设置序列化格式。

 

Rows

获取属于该表的行的集合。

 

Site

获取或设置 DataTable 的 System.ComponentModel.ISite。 (重写 MarshalByValueComponent.Site。)

 

TableName

获取或设置 DataTable 的名称。

4.DataTable的方法

 

名称

说明

 

AcceptChanges

提交自上次调用 AcceptChanges 以来对该表进行的所有更改。

 

BeginInit

开始初始化在窗体上使用或由另一个组件使用的 DataTable。 初始化发生在运行时。

 

BeginLoadData

在加载数据时关闭通知、索引维护和约束。

 

Clear

清除所有数据的 DataTable。

 

Clone

克隆 DataTable 的结构,包括所有 DataTable 架构和约束。

 

Compute

计算用来传递筛选条件的当前行上的给定表达式。

 

Copy

复制该 DataTable 的结构和数据。

 

CreateDataReader

返回与此 DataTable 中的数据相对应的 DataTableReader。

 

CreateInstance

基础结构。创建 DataTable 的一个新实例。

 

Dispose()

释放由 MarshalByValueComponent 使用的所有资源。 (继承自 MarshalByValueComponent。)

 

Dispose(Boolean)

释放由 MarshalByValueComponent 占用的非托管资源,还可以另外再释放托管资源。 (继承自 MarshalByValueComponent。)

 5.DataSet与DataTable
      DataSet中可包括多个 DataTable,可将多个查询结构存到一个DataSet中,方便操作,而DataTable中又包括多个DataRow、DataColumn,可通过这些DataRow、DataColumn来查看、操作其中的数据,而需将操作结果返回给数据库的话,则可以调用DataAdapter的 Update方法。
二、思维导图

【第七周学习笔记】ADO.Net中DataTable的应用

三、代码

1.添加引用

using System.Data;

2.利用SQL数据适配器创建并填充数据表

SqlConnection sqlConnection = new SqlConnection();
            sqlConnection.ConnectionString =
                ConfigurationManager.ConnectionStrings["Sql"].ConnectionString;
            SqlCommand sqlCommand = new SqlCommand();
            sqlCommand.Connection = sqlConnection;
            sqlCommand.CommandText = "SELECT * FROM tb_Drug;"; 
            SqlDataAdapter sqlDataAdapter = new SqlDataAdapter();   //声明并实例化SQL数据适配器;
            sqlDataAdapter.SelectCommand = sqlCommand;      //将SQL数据适配器的查询命令属性指向SQL命令;
            sqlDataAdapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;   //设置SQL数据适配器在缺少架构时的动作为追加主键,从而获取数据库中定义的主键;
            this.DrugTable = new DataTable();   //实例化本窗体的药品数据表,用于保存所有药品,以用作数据网格视图数据源;
            sqlConnection.Open();     //打开SQL连接;
            sqlDataAdapter.Fill(this.DrugTable);   //SQL数据适配器读取数据,并填充药品表;
            sqlConnection.Close(); 

3.添加行


foreach (DataRow row in searchResultRows)       //遍历搜索结果所在数据行数组;
            {
                searchResultTable.ImportRow(row);       //数据行导入数据表;
            }
            this.dgv_Drug.DataSource = searchResultTable;     //将数据网格视图的数据源设为搜索

4.复制表

/复制表,同时复制了表结构和表中的数据
DataTable dtNew = new DataTable();
dtNew = dt.Copy();
//复制表
DataTable dtNew = dt.Copy();  //复制dt表数据结构
dtNew.Clear()  //清空数据
for (int i = 0; i < dt.Rows.Count; i++)
{
    if (条件语句)
    {
         dtNew.Rows.Add(dt.Rows[i].ItemArray);  //添加数据行
    }
}
//克隆表,只是复制了表结构,不包括数据
DataTable dtNew = new DataTable();
dtNew = dt.Clone();
//如果只需要某个表中的某一行
DataTable dtNew = new DataTable();
dtNew = dt.Copy();
dtNew.Rows.Clear();//清空表数据
dtNew.ImportRow(dt.Rows[0]);//这是加入的是第一行

5.创建行、列

DataRow dr = dt.NewRow();//创建空行
dt.Rows.Add(dr);//创建空行

DataColumn dc = new DataColumn();//创建空列
dt.Columns.Add(dc);//创建带列名的列
dt.Columns.Add("总价", typeof(String));//创建带列名和类型的列

四、截图

点击载入前:

【第七周学习笔记】ADO.Net中DataTable的应用

点击载入后:

【第七周学习笔记】ADO.Net中DataTable的应用

 

点击更新前:

【第七周学习笔记】ADO.Net中DataTable的应用

点击更新后:

【第七周学习笔记】ADO.Net中DataTable的应用

相关文章:

  • 2021-12-01
  • 2021-05-08
  • 2021-11-26
  • 2022-01-09
猜你喜欢
  • 2021-07-06
  • 2021-09-03
  • 2021-12-09
  • 2021-04-29
  • 2021-10-18
  • 2021-08-01
  • 2021-09-12
相关资源
相似解决方案