程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> ADO.NET入門(4)

ADO.NET入門(4)

編輯:關於.NET
 4.轉換現有代碼

  大量的ASP頁面使用ADO對象來抽取數據.讓我們一起來回顧下幾例典型的案例,對你在以後處理移植或者改寫代碼時也許會有幫助。

  如果你有從單個recordset生成報表的ASP頁面,那麼DataReader會是你的好幫手。

String strConn, strCmd;
strConn = "DATABASE=MyAgenda;SERVER=localhost;UID=sa;PWD=;";
strCmd = "Select * From Names where ID=" + contactID.Text;
SQLConnection oCN = new SQLConnection(strConn);
SQLCommand oCMD = new SQLCommand(strCmd, oCN);
oCN.Open();
SQLDataReader dr;
oCMD.Execute(out dr);
while (dr.Read()) {
// Use dr.GetString(index) or
// dr["fIEld name"] to Response.Write data
}

  你可以利用HasMoreRows屬性來快速檢查是否DataReader為空.如果你僅僅只簡單處理一系列記錄,沒有什麼比DataReader.更快,更好的對象了,它同樣適用於查詢單個記錄。

  DataReader.的內容是不可編輯的,但你可以將內容移動到更具管理功能的對象裡,如:

  DataTable或是一個或多個DataRow 對象.

  當你需要處理表與記錄二者之間的復雜關系時,DataReader就不是合適的工具了。數據模型鏈接越多,SQL命令則會越復雜。導航模塊保有連續性,最後放入緩存的數據往往多於你所需要的,. DataSet 和 DataRelation objects是這種表關系模型的基礎.

  為管理parent/child 關系,ADO同樣也對data-shaping engine進行封裝. 總的說來, data shaping 和 ADO .NET 關系是一回事.就設計方面來說,二者幾乎沒有共同點. Shaped recordsetsct嵌入列表對象中包括了所有數據表信息。ADO.Net關系是動態鏈接,你可以在兩個數據表間隨時建立. ADO依靠於Shaping OLE DB service 提供程序,並使用專門的SQL類語言特征以在執行單個ADO命令的過程中生成一個分層的recordset.

  在 ADO.Net 中,關系中涉及的每個對象總是被看成單獨的個體。關系本身作為對象被公開,並且具有一定的行為規則。例如,DataRelation 對象可以從父行到子行一層層進行更改。您可以通過將 ForeignKeyConstraint 對象添加到 DataTable 的 Constraints 集合中來進行此操作。ForeignKeyConstraint 對象表示當刪除或更新數值和行時,對通過外鍵關系相關聯的一組列的約束。如前面提到的,一旦設置好了關系,在它按程序預設終止之前,您不能進行可能破壞該關系的更改。

  正如早先提到的一樣,一旦設置了relationship,除非它是程序性的終止,你不能夠對它進行修改,那樣會使它突然中斷.

  另外, relations沒有遞延性.你可以在Customers 和Orders之間,Orders 和 Products之間設置兩個不同的關系.但是,當為了某個customer而對orders導航時,你不能夠從一個order跳到相關的products行.解決方法是,你必須另外打開Orders/Products 關系,鎖定你需要的order,然後獲取相關的行.

  程序員需要在ASP Session 對中存儲記錄嗎?通過ADO .Net 和 DataSet 對象,你可以非常安全的進行工作,而不會引起在"Storing an ADO Recordset in GIT Might Cause An Access Violation"中所論及的麻煩.
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved