DataTable類將關(guān)系數(shù)據(jù)表示為表格形式。ADO.NET提供了一個DataTable類來獨立創(chuàng)建和使用數(shù)據(jù)表。它也可以和DataSet一起使用。 最初,當(dāng)創(chuàng)建DataTable時,它沒有表模式。我們可以通過向表中添加列和約束來創(chuàng)建表模式。在定義表模式之后,可以向表中添加行。
在創(chuàng)建DataTable之前,必須包含System.Data名稱空間。
public class DataTable : System.ComponentModel.MarshalByValueComponent, System.ComponentModel.IListSource,
System.ComponentModel.ISupportInitializeNotification, System.Runtime.Serialization.ISerializable,
System.Xml.Serialization.IXmlSerializable
下表列出了DataTable類的構(gòu)造函數(shù)。
| 編號 | 構(gòu)造函數(shù) | 描述 |
|---|---|---|
| 1 | DataTable() |
它用于初始化沒有參數(shù)的DataTable類的新實例。 |
| 2 | DataTable(String) |
它用于使用指定的表名初始化DataTable類的新實例。 |
| 3 | DataTable(SerializationInfo, StreamingContext) |
它用于使用SerializationInfo和StreamingContext初始化DataTable類的新實例。 |
| 4 | DataTable(String, String) |
它用于使用指定的表名和名稱空間初始化DataTable類的新實例。 |
下表列出了DataTable類的屬性。
| 編號 | 屬性 | 描述 |
|---|---|---|
| 1 | Columns |
它用于獲取屬于此表的列的集合。 |
| 2 | Constraints |
它被用來獲取由這個表維護的約束的集合。 |
| 3 | DataSet |
它用于獲取此表所屬的DataSet。 |
| 4 | DefaultView |
它用于獲取可能包含過濾視圖的表的自定義視圖。 |
| 5 | HasErrors |
它用于獲取指示DataSet表中的任何行中是否存在錯誤的值。 |
| 6 | MinimumCapacity |
它用于獲取或設(shè)置此表的初始起始大小。 |
| 7 | PrimaryKey |
它用于獲取或設(shè)置一個用作數(shù)據(jù)表主鍵的列數(shù)組。 |
| 8 | Rows |
它用于獲取屬于此表的行的集合。 |
| 9 | TableName |
它用于獲取或設(shè)置DataTable的名稱。 |
下表列出了DataTable類的方法。
| 編號 | 屬性 | 描述 |
|---|---|---|
| 1 | AcceptChanges() |
它用于提交對此表進行的所有更改。 |
| 2 | Clear() |
它用來清除所有數(shù)據(jù)的DataTable。 |
| 3 | Clone() |
它被用來克隆DataTable的結(jié)構(gòu)。 |
| 4 | Copy() |
它用于復(fù)制DataTable的結(jié)構(gòu)和數(shù)據(jù)。 |
| 5 | CreateDataReader() |
它用于返回與此DataTable中的數(shù)據(jù)相對應(yīng)的DataTableReader。 |
| 6 | CreateInstance() |
它用于創(chuàng)建DataTable的新實例。 |
| 7 | GetRowType() |
它用于獲取行類型。 |
| 8 | GetSchema() |
它用來獲取表的模式。 |
| 9 | ImportRow(DataRow) |
它用于將DataRow復(fù)制到DataTable中。 |
| 10 | Load(IDataReader) |
它用于使用提供的IDataReader從數(shù)據(jù)源填充DataTable。 |
| 11 | Merge(DataTable, Boolean) |
它用于合并指定的DataTable和當(dāng)前的DataTable。 |
| 12 | NewRow() |
它用于創(chuàng)建一個與表具有相同模式的新DataRow。 |
| 13 | Select() |
它用于獲取所有DataRow對象的數(shù)組。 |
| 14 | WriteXml(String) |
用于使用指定的文件將DataTable的當(dāng)前內(nèi)容寫為XML。 |
在下面的例子中,我們創(chuàng)建一個將數(shù)據(jù)填充到瀏覽器的數(shù)據(jù)表。首先創(chuàng)建一個Web項目:AdoNetDataTable,打開Visual Studio創(chuàng)建一個ASP.NET空網(wǎng)站項目,如下所示 -

向這個項目中添加一個新建項,在項目名稱上點擊右鍵,在彈出的菜單中選擇:添加 ->添加新項,文件的名稱為:Default.html,如下圖所示 -

本示例包含以下文件,Default.html -
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.html.cs" Inherits="_Default" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>DataTable示例</title>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
<asp:GridView ID="GridView1" runat="server">
</asp:GridView>
</form>
</body>
</html>
文件:Default.html.cs -
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
DataTable table = new DataTable();
table.Columns.Add("編號");
table.Columns.Add("姓名");
table.Columns.Add("電子郵箱");
table.Rows.Add("101", "Javaer", "javaer@yiibai.com");
table.Rows.Add("102", "Sam James", "sam.php@yiibai.com");
table.Rows.Add("103", "Subram Ruby", "ruby@yiibai.com");
table.Rows.Add("104", "Ankur Python", "ankur.python@yiibai.com");
GridView1.DataSource = table;
GridView1.DataBind();
}
}
執(zhí)行上面項目,點擊菜單:調(diào)試 -> 開始執(zhí)行(不調(diào)試) ,Visual Studio自動打開瀏覽器,看到結(jié)果如下所示 -
