ADO.NET



ADO.NET 在前端控制元件和後端資料庫之間架起了一座橋樑。ADO.NET 物件封裝了所有資料訪問操作,控制元件與這些物件互動以顯示資料,從而隱藏了資料移動的細節。

下圖概覽了 ADO.NET 物件

ADO.Net objects

DataSet 類

資料集表示資料庫的一個子集。它沒有與資料庫的持續連線。要更新資料庫,需要重新連線。DataSet 包含 DataTable 物件和 DataRelation 物件。DataRelation 物件表示兩個表之間的關係。

下表顯示了 DataSet 類的一些重要屬性

屬性 描述
CaseSensitive 指示資料表中字串比較是否區分大小寫。
Container 獲取元件的容器。
DataSetName 獲取或設定當前資料集的名稱。
DefaultViewManager 返回資料集中的資料檢視。
DesignMode 指示元件當前是否處於設計模式。
EnforceConstraints 指示在嘗試任何更新操作時是否遵循約束規則。
事件 獲取附加到此元件的事件處理程式列表。
ExtendedProperties 獲取與 DataSet 關聯的自定義使用者資訊集合。
HasErrors 指示是否存在任何錯誤。
IsInitialized 指示 DataSet 是否已初始化。
Locale 獲取或設定用於在表內比較字串的區域性資訊。
Namespace 獲取或設定 DataSet 的名稱空間。
Prefix 獲取或設定一個 XML 字首,該字首為 DataSet 的名稱空間指定別名。
Relations 返回 DataRelation 物件的集合。
Tables 返回 DataTable 物件的集合。

下表顯示了 DataSet 類的一些重要方法

方法 描述
AcceptChanges 接受自載入 DataSet 或上次呼叫此方法以來所做的所有更改。
BeginInit 開始 DataSet 的初始化。初始化在執行時發生。
Clear 清除資料。
Clone 複製 DataSet 的結構,包括所有 DataTable 架構、關係和約束。不復制任何資料。
Copy 複製結構和資料。
CreateDataReader() 返回一個 DataTableReader,每個 DataTable 一個結果集,與表在 Tables 集合中出現的順序相同。
CreateDataReader(DataTable[]) 返回一個 DataTableReader,每個 DataTable 一個結果集。
EndInit 結束資料集的初始化。
Equals(Object) 確定指定的 Object 是否等於當前 Object。
Finalize 釋放資源並執行其他清理操作。
GetChanges 返回 DataSet 的副本,其中包含自載入或呼叫 AcceptChanges 方法以來所做的所有更改。
GetChanges(DataRowState) 獲取 DataSet 的副本,其中包含自載入或呼叫 AcceptChanges 方法以來所做的所有更改,並按 DataRowState 過濾。
GetDataSetSchema 獲取 DataSet 的 XmlSchemaSet 副本。
GetObjectData 使用序列化 DataSet 所需的資料填充序列化資訊物件。
GetType 獲取當前例項的型別。
GetXML 返回資料的 XML 表示形式。
GetXMLSchema 返回資料的 XML 表示形式的 XSD 架構。
HasChanges() 獲取一個值,該值指示 DataSet 是否有更改,包括新行、已刪除行或已修改行。
HasChanges(DataRowState) 獲取一個值,該值指示 DataSet 是否有更改,包括新行、已刪除行或已修改行,並按 DataRowState 過濾。
IsBinarySerialized 檢查 DataSet 的序列化表示形式的格式。
Load(IDataReader, LoadOption, DataTable[]) 使用提供的 IDataReader 從資料來源填充 DataSet,使用 DataTable 例項陣列提供架構和名稱空間資訊。
Load(IDataReader, LoadOption, String[]) 使用提供的 IDataReader 從資料來源填充 DataSet,使用字串陣列為 DataSet 中的表提供名稱。
Merge() 將資料與來自另一個 DataSet 的資料合併。此方法具有不同的過載形式。
ReadXML() 將 XML 架構和資料讀取到 DataSet 中。此方法具有不同的過載形式。
ReadXMLSchema(0) 將 XML 架構讀取到 DataSet 中。此方法具有不同的過載形式。
RejectChanges 回滾自上次呼叫 AcceptChanges 以來所做的所有更改。
WriteXML() 從 DataSet 寫入 XML 架構和資料。此方法具有不同的過載形式。
WriteXMLSchema() 將 DataSet 的結構作為 XML 架構寫入。此方法具有不同的過載形式。

DataTable 類

DataTable 類表示資料庫中的表。它具有以下重要屬性;除了 PrimaryKey 屬性外,大多數屬性都是隻讀屬性

屬性 描述
ChildRelations 返回子關係的集合。
Columns 返回 Columns 集合。
Constraints 返回 Constraints 集合。
DataSet 返回父 DataSet。
DefaultView 返回表的檢視。
ParentRelations 返回 ParentRelations 集合。
PrimaryKey 獲取或設定一組列作為表的主鍵。
Rows 返回 Rows 集合。

下表顯示了 DataTable 類的一些重要方法

方法 描述
AcceptChanges 提交自上次 AcceptChanges 以來所做的所有更改。
Clear 清除表中的所有資料。
GetChanges 返回 DataTable 的副本,其中包含自呼叫 AcceptChanges 方法以來所做的所有更改。
GetErrors 返回包含錯誤的行陣列。
ImportRows 將新行復制到表中。
LoadDataRow 查詢並更新特定行,如果未找到任何行,則建立新行。
Merge 將表與另一個 DataTable 合併。
NewRow 建立一個新的 DataRow。
RejectChanges 回滾自上次呼叫 AcceptChanges 以來所做的所有更改。
Reset 將表重置為其原始狀態。
Select 返回 DataRow 物件陣列。

DataRow 類

DataRow 物件表示表中的一行。它具有以下重要屬性

屬性 描述
HasErrors 指示是否存在任何錯誤。
Items 獲取或設定儲存在特定列中的資料。
ItemArrays 獲取或設定行的所有值。
Table 返回父表。

下表顯示了 DataRow 類的一些重要方法

方法 描述
AcceptChanges 接受自上次呼叫此方法以來所做的所有更改。
BeginEdit 開始編輯操作。
CancelEdit 取消編輯操作。
Delete 刪除 DataRow。
EndEdit 結束編輯操作。
GetChildRows 獲取此行的子行。
GetParentRow 獲取父行。
GetParentRows 獲取 DataRow 物件的父行。
RejectChanges 回滾自上次呼叫 AcceptChanges 以來所做的所有更改。

DataAdapter 物件

DataAdapter 物件充當 DataSet 物件和資料庫之間的中介。這有助於 DataSet 包含來自多個數據庫或其他資料來源的資料。

DataReader 物件

DataReader 物件是 DataSet 和 DataAdapter 組合的替代方案。此物件提供了對資料庫中資料記錄的面向連線的訪問。這些物件適用於只讀訪問,例如填充列表,然後斷開連線。

DbCommand 和 DbConnection 物件

DbConnection 物件表示與資料來源的連線。連線可以在不同的命令物件之間共享。

DbCommand 物件表示從檢索或操作資料傳送到資料庫的命令或儲存過程。

示例

到目前為止,我們已經使用了計算機中已經存在的表和資料庫。在本例中,我們將建立一個表,新增列、行和資料,並使用 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);
      }
   }
}

執行程式時,觀察以下內容

  • 應用程式首先建立一個數據集,並使用 GridView 控制元件的 DataBind() 方法將其繫結到網格檢視控制元件。

  • Createdataset() 方法是一個使用者自定義函式,它建立一個新的 DataSet 物件,然後呼叫另一個使用者自定義方法 CreateStudentTable() 來建立表並將其新增到資料集的 Tables 集合中。

  • CreateStudentTable() 方法呼叫使用者自定義方法 AddNewColumn() 和 AddNewRow() 來建立表的列和行,以及向行中新增資料。

頁面執行後,將返回表中的行,如所示

ADO.Net Result
廣告

© . All rights reserved.