ADO.Net中DataTable的应用
一、知识点描述
DataTable对象用来保存单个表数据,在System.Data命名空间中定义。它包含由DataCloumnCollection表示集合以及由ConstraintCollection表示的约束集合,这两个共同定义表的架构。DataTable还包含DataRowCollection所表示的行的集合,而DataRowCollection则包含表中的数据。
DataTable对象的常用属性、常用方法以其说明,如表1-1、1-2所示。
表1-1:
属性名称 |
说明 |
Columns |
获取属于表的所有列的集合 |
Rows |
获取属于表的所有行的集合 |
DefaultView |
获取可能包括筛选视图或游标的位置的表的自定义视图 |
HasError |
获取一个值,该值指示表所属的DataSet的任何表的任何行中是否有错误 |
MinimumCapacity |
获取或设置表最初的起始大小 |
TableName |
获取或设置DataTable的名称 |
表1-2:
方法名称 |
说明 |
AcceptChanges() |
提交自上次调用AcceptChanges以来对该表进行的所有更改 |
BeginInit() |
开始初始化在窗体上使用或由另一个组件使用DataTable。初始化发生在运行时。 |
BeginLoadData() |
在加载数据时关闭通知、索引维护和约束 |
Clear() |
清除所有数据的DataTable |
Clone() |
克隆DataTable的结构,包括所有DataTable架构和约束 |
Compute() |
计算用来传递筛选条件的当前行上的给定表达式 |
Copy() |
复制该DataTable的结构和数据 |
CreateDataReader() |
返回与此DataTable中的数据相对应的DataTableReader |
CreateInstance() |
基础结构。创建DataTable的一个新实例 |
Dispose() |
释放由MarshalByValueComponent使用的所有资源 |
EndInit() |
结束在窗体上使用或有另一个组件使用的DataTable的初始化。初始化发生在运行时。 |
NewRow() |
创建与该表具有相同架构的的新DataRow |
Reset() |
将DataTable重置为其初始状态 |
Select() |
获取DataRow对象的数组 |
ToString() |
获取TableName和DisplayExpression |
WriteXml() |
使用指定的对象以XML格式写入DattaTable的当前内容 |
(1)创建DataTable的实例对象。DataTable可以通过其他对象的属性获取,也可以通过代码动态创建。如下为创建DataTable对象的一般步骤:
(2)通过创建DataColumn对象来构建表结构。
(3)将创建好的表结构添加到DataTable对象中。
(4)调用NewRow()创建DataRow对象。
(5)向DataRow对象中添加多条数据记录。
(6)将数据插入到DataTable对象中。
二、思维导图
三、示例代码
由于排版内容的限制,我们就常用的方法进行讲解
1、添加doctortable的列信息:工号、姓名:
this.dgv_message.DataSource = doctortable; this.dgv_message.Columns["D_ID"].HeaderText = "工号"; this.dgv_message.Columns["DOCTOR"].HeaderText = "姓名";
2、添加表数据,即每一行的数据:工号、姓名:
sqlCommand.Parameters.AddWithValue("@D_ID",this.txt_id.Text.Trim());sqlCommand.Parameters.AddWithValue("@DOCTOR",this.txt_name.Text。Trim());
3、将该表绑定到DataGridView控件中:
this.dgv_message.DataSource = doctortable;
4、将工号和姓名读取到TextBox框里
this.txt_id.Text = sqlDataReader["D_ID"].ToString(); this.txt_name.Text = sqlDataReader["DOCTOR"].ToString();
5、DataGridView中同时连接KESHI、DENGJI、DMESSAGE这三张表,并把其他KESHI、DENGJI这两张表的数据赋值到DMESSAGE表中:
SqlCommand sqlCommand = new SqlCommand(); SqlCommand sqlCommand2 = new SqlCommand(); SqlCommand sqlCommand3 = new SqlCommand(); sqlCommand.Connection = sqlConnection; sqlCommand2.Connection = sqlConnection; sqlCommand3.Connection = sqlConnection; sqlCommand.CommandText = "SELECT * FROM KESHI;"; sqlCommand2.CommandText = "SELECT * FROM DENGJI;"; sqlCommand3.CommandText = "SELECT * FROM DMESSAGE;"; SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(); sqlDataAdapter.SelectCommand = sqlCommand; DataTable keshitable = new DataTable(); SqlDataAdapter sqlDataAdapter2 = new SqlDataAdapter(); sqlDataAdapter2.SelectCommand = sqlCommand2; DataTable dengjitable = new DataTable();
SqlDataAdapter sqlDataAdapter3 = new SqlDataAdapter(); sqlDataAdapter3.SelectCommand = sqlCommand3; DataTable doctortable = new DataTable();
6、打开SQL连接KESHI、DENGJI、DMESSAGE读取数据,并关闭:
sqlConnection.Open();
sqlDataAdapter.Fill(keshitable);
sqlDataAdapter2.Fill(dengjitable);
sqlDataAdapter3.Fill(doctortable);
sqlConnection.Close();
四、效果截图
1、创建列和添加表数据:
2、TextBox框中读取表中工号和姓名:
3、DataGridView中同时连接KESHI、DENGJI、DMESSAGE这三张表,并把其他KESHI、DENGJI这两张表的数据赋值到DMESSAGE表中,打开读取数据: