ADO.NET 提供了前端控件和后端數(shù)據(jù)庫之間的橋梁。ADO.NET 對(duì)象封裝了與數(shù)據(jù)顯示對(duì)象相互作用的所有的數(shù)據(jù)存取操作和控件。因此便隱藏了數(shù)據(jù)移動(dòng)的細(xì)節(jié)。
下列圖表整體展示了 ADO.NET 對(duì)象:
數(shù)據(jù)集代表了數(shù)據(jù)庫的一個(gè)子集。它和數(shù)據(jù)庫沒有持續(xù)的連接。為了升級(jí)數(shù)據(jù)庫需要進(jìn)行重新連接。DataSet 包括了 DataTable 和 DataRelation 對(duì)象。DataRelation 對(duì)象代表了兩張表之間的關(guān)系。
下表是 DataSet 類的一些重要屬性:
屬性 | 描述 |
---|---|
CaseSensitive | 說明和數(shù)據(jù)表進(jìn)行對(duì)比的字符串是否區(qū)分大小寫。 |
Container | 為組件獲取空間。 |
DataSetName | 獲取或者設(shè)置現(xiàn)有數(shù)據(jù)集合的名稱。 |
DefaultViewManager | 返回?cái)?shù)據(jù)集合中的數(shù)據(jù)視圖。 |
DesignMode | 表明組件是否處于設(shè)計(jì)模式下。 |
EnforceConstraints | 表明嘗試上傳文件時(shí)是否遵循限制條件。 |
Events | 獲取與本組件相關(guān)的事件處理器列表。 |
ExtendedProperties | 獲取與 DataSet 相關(guān)的自定義用戶的信息的集合。 |
HasErrors | 表明是否有任何錯(cuò)誤。 |
IsInitialized | 表明 DataSet 是否初始化。 |
Locale | 獲取或者設(shè)置用來和表比較字符串的信息。 |
Namespace | 獲取或者設(shè)置 DataSet 的命名空間。 |
Prefix | 獲取或者設(shè)置一個(gè) XML 前綴,它是命名空間的別名。 |
Relations | 返回 DataRelation 對(duì)象的集合。 |
Tables | 返回 DataTable 對(duì)象的集合。 |
下表列出來 DataSet 類的一些重要方法:
方法 | 描述 |
---|---|
AcceptChanges | 接受所有由于裝載 DataSet 或者這個(gè)方法的更改。 |
BeginInit | 開始 DataSet 的初始化。該初始化發(fā)生在運(yùn)行時(shí)。 |
Clear | 清除數(shù)據(jù)。 |
Clone | 克隆包括所有 DataTable 的結(jié)構(gòu)、關(guān)系和限制在內(nèi)的 DataSet 的結(jié)構(gòu)。但是不克隆數(shù)據(jù)。 |
Copy | 復(fù)制數(shù)據(jù)和結(jié)構(gòu)。 |
CreateDataReader() | 為每個(gè) DataTable 返回帶有一個(gè)結(jié)果集的 DataTableReader,順序與 Tables 集合中表的顯示順序相同。 |
CreateDataReader(DataTable[]) | 為每個(gè) DataTable 返回帶有一個(gè)結(jié)果集 DataTableReader。 |
EndInit | 結(jié)束在窗體上使用或由另一個(gè)組件使用的 DataSet 的初始化。初始化發(fā)生在運(yùn)行時(shí)。 |
Equals(Object) | 確定指定的對(duì)象是否等于當(dāng)前對(duì)象。 |
Finalize | 釋放資源執(zhí)行其他清除。 |
GetChanges | 獲取 DataSet 的副本,該副本包含自加載以來或自上次調(diào)用 AcceptChanges 以來對(duì)該數(shù)據(jù)集進(jìn)行的所有更改。 |
GetChanges(DataRowState) | 獲取由 DataRowState 篩選的 DataSet 的副本,該副本包含上次加載以來或調(diào)用 AcceptChanges 以來對(duì)該數(shù)據(jù)集進(jìn)行的所有更改。 |
GetDataSetSchema | 為 DataSet 獲取 XmlSchemaSet 副本。 |
GetObjectData | 用序列化 DataSet 所需的數(shù)據(jù)填充序列化信息對(duì)象。 |
GetType | 獲取當(dāng)前實(shí)例的 Type。 |
GetXML | 返回存儲(chǔ)在 DataSet 中的數(shù)據(jù)的 XML 表示形式。 |
GetXMLSchema | 返回存儲(chǔ)在 DataSet 中的數(shù)據(jù)的 XML 表示形式的 XML 架構(gòu)。 |
HasChanges() | 獲取一個(gè)值,該值指示 DataSet 是否有更改,包括新增行、已刪除的行或已修改的行。 |
HasChanges(DataRowState) | 獲取一個(gè)值,該值指示 DataSet 是否有 DataRowState 被篩選的更改,包括新增行、已刪除的行或已修改的行。 |
IsBinarySerialized | 檢查 DataSet 的序列化表示形式的格式。 |
Load(IDataReader, LoadOption, DataTable[]) | 使用提供的 IDataReader 以數(shù)據(jù)源的值填充 DataSet,同時(shí)使用 DataTable 實(shí)例的數(shù)組提供架構(gòu)和命名空間信息。 |
Load(IDataReader, LoadOption, String[]) | 使用所提供的 IDataReader,并使用字符串?dāng)?shù)組為 DataSet 中的表提供名稱,從而用來自數(shù)據(jù)源的值填充 DataSet。 |
Merge() | 將指定的 DataSet、DataTable 或 DataRow 對(duì)象的數(shù)組合并到當(dāng)前的 DataSet 或 DataTable 中。這種方法有不同的重載形式。 |
ReadXML() | 將 XML 架構(gòu)和數(shù)據(jù)讀入 DataSet。這種方法有不同的重載形式。 |
ReadXMLSchema(0) | 將 XML 架構(gòu)讀入 DataSet。這種方法有不同的重載形式。 |
RejectChanges | 回滾自創(chuàng)建 DataSet 以來或上次調(diào)用 DataSet.AcceptChanges 以來對(duì)其進(jìn)行的所有更改。 |
WriteXML() | 從 DataSet 寫 XML 數(shù)據(jù)和架構(gòu)。這種方法有不同的重載形式。 |
WriteXMLSchema() | 從 DataSet 寫 XML 架構(gòu)。這種方法有不同的重載形式。 |
DataTable 類代表了數(shù)據(jù)庫中的表。它有如下的重要屬性:大多數(shù)屬性都是只讀屬性除了 PrimaryKey 屬性:
屬性 | 描述 |
---|---|
ChildRelations | 獲取此 DataTable 的子關(guān)系的集合。 |
Columns | 獲取屬于該表的列的集合。 |
Constraints | 獲取由該表維護(hù)的約束的集合。 |
DataSet | 獲取此表所屬的 DataSet。 |
DefaultView | 獲取可能包括篩選視圖或游標(biāo)位置的表的自定義視圖。 |
ParentRelations | 獲取該 DataTable 的父關(guān)系的集合。 |
PrimaryKey | 獲取或設(shè)置充當(dāng)數(shù)據(jù)表主鍵的列的數(shù)組。 |
Rows | 獲取屬于該表的行的集合。 |
下表列示出了一些 DataTable 類的重要方法:
方法 | 描述 |
---|---|
AcceptChanges | 提交自加載此 DataSet 或上次調(diào)用 AcceptChanges 以來對(duì)其進(jìn)行的所有更改。 |
Clear | 通過移除所有表中的所有行來清除任何數(shù)據(jù)的 DataSet。 |
GetChanges | 獲取 DataSet 的副本,該副本包含自上次加載以來或自調(diào)用 AcceptChanges 以來對(duì)該數(shù)據(jù)集進(jìn)行的所有更改。 |
GetErrors | 獲取包含錯(cuò)誤的 DataRow 對(duì)象的數(shù)組。 |
ImportRows | 將 DataRow 復(fù)制到 DataTable 中,保留任何屬性設(shè)置以及初始值和當(dāng)前值。 |
LoadDataRow | 查找和更新特定行。 如果找不到任何匹配行,則使用給定值創(chuàng)建新行。 |
Merge | 將指定的 DataSet、DataTable 或 DataRow 對(duì)象的數(shù)組合并到當(dāng)前的 DataSet 或 DataTable 中。 |
NewRow | 創(chuàng)建與該表具有相同架構(gòu)的新 DataRow。 |
RejectChanges | 回滾自該表加載以來或上次調(diào)用 AcceptChanges 以來對(duì)該表進(jìn)行的所有更改。 |
Reset | 清除所有表并從 DataSet 中刪除所有關(guān)系、外部約束和表。 子類應(yīng)重寫 Reset,以便將 DataSet 還原到其原始狀態(tài)。 |
Select | 獲取 DataRow 對(duì)象的數(shù)組。 |
DataRow 對(duì)象代表了表中的一行,它有如下的重要屬性:
屬性 | 描述 |
---|---|
HasErrors | 表明是否有錯(cuò)誤。 |
Items | 獲取或者設(shè)置存儲(chǔ)在特定欄目的數(shù)據(jù)。 |
ItemArrays | 獲取或者設(shè)置本行中所有的值。 |
Table | 返回父表。 |
下表列示了 DataRow 類的重要方法:
方法 | 描述 |
---|---|
AcceptChanges | 應(yīng)用調(diào)用該方法后的所有更改。 |
BeginEdit | 開始編輯操作。 |
CancelEdit | 取消編輯操作。 |
Delete | 刪除數(shù)據(jù)行。 |
EndEdit | 結(jié)束編輯操作。 |
GetChildRows | 獲取本行的子行。 |
GetParentRow | 獲取父行。 |
GetParentRows | 獲取 DataRow 的父行。 |
RejectChanges | 回滾所有 AcceptChanges 調(diào)用后的更改。 |
DataAdapter 對(duì)象扮演 DataSet 對(duì)象與數(shù)據(jù)庫之間的中間者。這有助于 DataSet 從多種數(shù)據(jù)庫或者其他數(shù)據(jù)源獲取數(shù)據(jù)。
DataReader 對(duì)象是 DataSet 和 DataAdapter 結(jié)合的備選。這個(gè)對(duì)象提供了對(duì)數(shù)據(jù)庫中的數(shù)據(jù)記錄的定向的存取。這些對(duì)象只適合只讀存取,例如填充一個(gè)列表然后斷開連接。
DbConnection 對(duì)象代表了數(shù)據(jù)源的連接。這種連接可以在不同的命令對(duì)象間共享。
DbCommand 對(duì)象代表了從檢索或操縱數(shù)據(jù)發(fā)送到數(shù)據(jù)庫的命令或者或者一個(gè)儲(chǔ)存的進(jìn)程。
目前為止,我們已經(jīng)應(yīng)用了我們電腦中的表和數(shù)據(jù)庫。在本案例中,我們將創(chuàng)建一個(gè)表,添加欄目,行和數(shù)據(jù),并且用 GridView 控件顯示表。
源文件代碼如下:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="createdatabase._Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>
Untitled Page
</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:GridView ID="GridView1" runat="server">
</asp:GridView>
</div>
</form>
</body>
</html>
文件的代碼如下:
namespace createdatabase
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DataSet ds = CreateDataSet();
GridView1.DataSource = ds.Tables["Student"];
GridView1.DataBind();
}
}
private DataSet CreateDataSet()
{
//creating a DataSet object for tables
DataSet dataset = new DataSet();
// creating the student table
DataTable Students = CreateStudentTable();
dataset.Tables.Add(Students);
return dataset;
}
private DataTable CreateStudentTable()
{
DataTable Students = new DataTable("Student");
// adding columns
AddNewColumn(Students, "System.Int32", "StudentID");
AddNewColumn(Students, "System.String", "StudentName");
AddNewColumn(Students, "System.String", "StudentCity");
// adding rows
AddNewRow(Students, 1, "M H Kabir", "Kolkata");
AddNewRow(Students, 1, "Shreya Sharma", "Delhi");
AddNewRow(Students, 1, "Rini Mukherjee", "Hyderabad");
AddNewRow(Students, 1, "Sunil Dubey", "Bikaner");
AddNewRow(Students, 1, "Rajat Mishra", "Patna");
return Students;
}
private void AddNewColumn(DataTable table, string columnType, string columnName)
{
DataColumn column = table.Columns.Add(columnName, Type.GetType(columnType));
}
//adding data into the table
private void AddNewRow(DataTable table, int id, string name, string city)
{
DataRow newrow = table.NewRow();
newrow["StudentID"] = id;
newrow["StudentName"] = name;
newrow["StudentCity"] = city;
table.Rows.Add(newrow);
}
}
}
當(dāng)你執(zhí)行程序時(shí),觀察以下幾方面:
更多建議: