ADO.NET之DataTable

ADO.NET可以在与数据库断开连接的方式下通过DataSet或DataTable对象进行数据处理,当需要更新数据时才重新与数据源进行连接,并更新数据源。DataTable对象表示保存在本机内存中的表,它提供了对表中行列数据对象的各种操作。下面我们来简单介绍一下DataTable。
思维导图:
ADO.NET之DataTable

DataTable属性和方法

属性 说明
Columns 它用于获取属于此表的列的集合。
Constraints 它被用来获取由这个表维护的约束的集合。
DataSet 它用于获取此表所属的DataSet。
DefaultView 它用于获取可能包含过滤视图的表的自定义视图。
HasErrors 它用于获取指示DataSet表中的任何行中是否存在错误的值。
MinimumCapacity 它用于获取或设置此表的初始起始大小。
PrimaryKey 它用于获取或设置一个用作数据表主键的列数组。
Rows 它用于获取属于此表的行的集合。
TableName 它用于获取或设置DataTable的名称。
方法 说明
AcceptChanges() 它用于提交对此表进行的所有更改。
Clear() 它用来清除所有数据的DataTable。
Clone() 它被用来克隆DataTable的结构。
Copy() 它用于复制DataTable的结构和数据。
CreateDataReader() 它用于返回与此DataTable中的数据相对应的DataTableReader。
CreateInstance() 它用于创建DataTable的新实例。
GetRowType() 它用于获取行类型。
GetSchema() 它用来获取表的模式。
ImportRow(DataRow) 它用于将DataRow复制到DataTable中。
Load(IDataReader) 它用于使用提供的IDataReader从数据源填充DataTable。
Merge(DataTable, Boolean) 它用于合并指定的DataTable和当前的DataTable。
NewRow() 它用于创建一个与表具有相同模式的新DataRow。
Select() 它用于获取所有DataRow对象的数组。
WriteXml(String) 用于使用指定的文件将DataTable的当前内容写为XML。

下面来讲讲怎么使用DataTable
DataTable类将关系数据表示为表格形式。ADO.NET提供了一个DataTable类来独立创建和使用数据表。它也可以和DataSet一起使用。 最初,当创建DataTable时,它没有表模式。我们可以通过向表中添加列和约束来创建表模式。在定义表模式之后,可以向表中添加行。在创建DataTable之前,必须包含System.Data名称空间。最后将SQL Server数据库中的表填充到DataTable对象中
一.创建DataTable对象
可以通过以下两种方式创建DataTable对象
1.通过DataTable类的构造函数创建DataTable对象;
例如:
DataTable ygtable = new DataTable();
2.通过DataSet的Tables对象的Add方法创建DataTable对象;
例如:

DataSet dataset = new DataSet(); 
DataTable ygtable = dataset.Tables.Add("MyTableName")

二.在DataTable对象中添加列
在DataTable对象中添加列的最常用的方法是通过DataTable对象的Column属性中的Add方法。添加后的每一列都是一个DataColumn对象。
例如:
调用DataTable对象的Column中的Add方法添加列。例如:

DataTable table = new DataTable(“table1”);
table.Columns.Add(“工号”,typeof(System.Data.SqlTypes.SqlString));
table.Columns.Add(“姓名”,typeof(System.Data.SqlTypes.SqlString));

三. 设置DataTable对象的主键
关系数据库中的表一般都有一个主键,用来惟一标识表中的每一行记录。通过DataTable对象的PrimaryKey属性可以设置Datatable的主键。主键可以是一个或者多个DataColumn对象组成的数组。
例如:

DataColumn[] key = new DataColumn[1];//dt是一个DataTable对象 
key[0] = dt.Columns[0]; 
dt.PrimaryKey = key;

四. 在DataTable对象中创建行
在DataTable对象中创建行DataTable对象的每一行都是一个DataRow对象,所以创建行时可以先利用DataTable对象的NewRow方法创建一个DataRow对象,并设置新行中各列的数据,然后利用Add方法将DataRow对象添加到表中

五.将SQL Server数据库中的表填充到DataTable对象中

先声明实例化数据库连接,指定SQL命令为查询科室

	    SqlConnection sqlConnection = new SqlConnection();                                              //声明并实例化SQL连接;
        sqlConnection.ConnectionString =
        ConfigurationManager.ConnectionStrings["Sql"].ConnectionString;                             //配置管理器从配置文件读取连接字符串,并将之赋予SQL连接的连接字符串属性;
        SqlCommand sqlCommand2 = new SqlCommand();                                                      //声明并实例化SQL命令;
        sqlCommand2.Connection = sqlConnection;                                                         //将SQL命令的连接属性指向SQL连接;
        sqlCommand2.CommandText = "SELECT * FROM tb_ks;";                             //指定SQL命令的命令文本;该命令查询指定科室;

接着通过DataAdapter对象的Fill方法完成。

		    SqlDataAdapter sqlDataAdapter = new SqlDataAdapter();                                           //声明并实例化SQL数据适配器,同时借助构造函数,将其SelectCommand属性设为先前创建的SQL命令;
            sqlDataAdapter.SelectCommand = sqlCommand2;                                                      //将SQL数据适配器的查询命令属性指向SQL命令;
            DataTable ksTable = new DataTable();                                                         //声明并实例化数据表,用于保存所有科室,以用作下拉框数据源;
            sqlConnection.Open();                                                                           //打开SQL连接;
            sqlDataAdapter.Fill(ksTable);                                                                //SQL数据适配器读取数据,并填充科室数据表;
            this.cmb_ks.DataSource = ksTable;                                                         //将班级下拉框的数据源设为科室数据表;
            this.cmb_ks.DisplayMember = "Name";                                                          //将科室下拉框的显示成员设为科室数据表的名称列;
            this.cmb_ks.ValueMember = "No";                                                              //将班级下拉框的值成员设为科室数据表的编号列;
            SqlDataReader sqlDataReader = sqlCommand2.ExecuteReader();                                      //调用SQL命令的方法ExecuteReader来执行命令,并获取数据阅读器;

运行结果图:
ADO.NET之DataTable