茫茫網海中的冷日 - 對這文章發表回應
茫茫網海中的冷日
         
茫茫網海中的冷日
發生過的事,不可能遺忘,只是想不起來而已!
 恭喜您是本站第 1729327 位訪客!  登入  | 註冊
主選單

Google 自訂搜尋

Goole 廣告

隨機相片
IMG_DPP_0027.jpg

授權條款

使用者登入
使用者名稱:

密碼:


忘了密碼?

現在就註冊!

對這文章發表回應

發表限制: 非會員 可以發表

發表者: 冷日 發表時間: 2008/3/19 7:58:57
輕鬆玩轉 Typed DataSet, Part I

Written by: Rickie Lee

Dec. 07, 2004

Typed DataSet 與一般 DataSet 的簡單比較: 1. Typed DataSet 直接繼承 DataSet Class, 是一個特殊的 DataSet 類型 . 2. 通過 Typed DataSet ,可以方便直接地獲取 tables filelds. 3. 每一個 DataTable Typed DataSet 的一個屬性 . 4. 同樣地,每一個 Field
Data Row 的一個屬性 . 5. 使用 Typed DataSet ,不僅語法簡潔,而且在編譯期間進行類型檢查。 關於 Typed DataSet 的優點與缺點,及其在分布式應用系統中作用,請參考《 分布式應用架構中的數據傳輸對象( DTO 》。

一、創建 Typed DataSet

這裡演示 XSD 架構文件創建有類型的 DataSet 過程。 要使用 Visual Studio .NET XSD 架構文件創建有類型的 DataSet ,請執行以下步驟:

1.
Visual Studio .NET
中,創建一個新項目或打開一個現有項目。

2. 為項目添加一個現有的 XSD 架構,或在組件設計器中創建一個新的 XSD 架構。

從上圖可以發現, Typed DataSet 的後綴為 .xsd ,因為 Typed DataSet 的源文件是 XML Schema 文檔。 XSD 文件不僅包含 table column 名稱,而且包含 keys, relationships
constraints 信息。

3. 使用Server Explorer打開相應的Database,然後通過拖拉tables到上述XSD文件。

下面以 Northwind Database 為例:

添加 Orders, Order Details 兩個表。 VS.Net IDE 不能自動檢測 Database 中表間關係,因此 Orders Order Details 兩個表之間在 XSD 文件沒有自動產生任何關係。

4. 手工建立表與表之間的關係

Toolbox 中拖拉一個新的 Relation
XSD 編輯界面,並彈出如下 Edit Relation windows form

通過上述 Edit Relation 界面,可以編輯 relationship 參數。

另外,也可以通過 Toolbox XSD 的編輯界面,增加 / 修改 table column 元素。


注意:示例中將上面的 Order Details 元素改名為 OrderDetails ,去除其中的空格,以免一些不必要的麻煩。

Schema (架構)菜單中,單擊 Generate DataSet (生成 DataSet Preview DataSet

為確認已創建該有類型的 DataSet ,可以在解決方案資源管理器中單擊 Show All Files (顯示所有文件)按鈕。 展開 XSD 架構文件的節點,確認存在一個與 XSD 架構相關聯的代碼文件。該代碼文件定義了新的有類型的 DataSet 類。


public class OrderDataSet : DataSet

…… Typed DataSet/OrderDataSet 直接繼承 DataSet Class.

二、使用 Typed DataSet

在使用上述 Typed DataSet 之前,先了解 OrderDataSet.XSD 文件內容。

如下是 Northwind Database Orders table 的架構元素:



上述 XML Schema 會生成 OrdersRow 這一對象名稱
OrderDataSet.OrdersRow
,還有一個名為 Orders DataRowCollection Class OrderDataSet.Orders )。

調用上述 Typed DataSet Code snippet

OrderDataSet theOrderDS = new OrderDataSet();

string strSelectOrders = "Select * From Orders ";

strSelectOrders += "Select * From [Order Details]";

SqlHelper.FillDataset(connStr, CommandType.Text, strSelectOrders, theOrderDS, new string[] {"Orders", "OrderDetails"});


StringBuilder strResults = new StringBuilder();

foreach(OrderDataSet.OrdersRow theOrder in theOrderDS.Orders)

{

strResults.Append(theOrder.OrderID.ToString() + " "

+ theOrder.CustomerID.ToString() + " "

+ theOrder.EmployeeID.ToString() + Environment.NewLine);

strResults.Append("Order Details: ");

strResults.Append(theOrder.GetChildRows("OrdertoOrderDetails").GetLength(0).ToString());

strResults.Append(Environment.NewLine);


}

txtResults.Text = strResults.ToString();

代碼比較簡單,上述代碼調用了 SqlHelper Class Microsoft Data Access Application Block )的 FillDataset 方法,來完成 DataSet 的填充。 FillDataSet 方法支持 Typed DataSet ,值得推薦使用。

Any questions or errors, please leave comments. Thanks.

. 4. 同樣地,每一個 Field Data Row 的一個屬性 . 5. 使用 Typed DataSet
,不僅語法簡潔,而且在編譯期間進行類型檢查。 關於 Typed DataSet 的優點與缺點,及其在分布式應用系統中作用,請參考《 分布式應用架構中的數據傳輸對象( DTO 》。

一、創建 Typed DataSet

這裡演示 XSD 架構文件創建有類型的 DataSet 過程。 要使用 Visual Studio .NET XSD 架構文件創建有類型的 DataSet ,請執行以下步驟:

1. Visual Studio .NET 中,創建一個新項目或打開一個現有項目。

2. 為項目添加一個現有的
XSD
架構,或在組件設計器中創建一個新的 XSD 架構。

從上圖可以發現, Typed DataSet 的後綴為 .xsd ,因為 Typed DataSet 的源文件是 XML Schema 文檔。 XSD 文件不僅包含 table column 名稱,而且包含 keys, relationships constraints 信息。

3. 使用Server Explorer打開相應的Database,然後通過拖拉tables到上述XSD文件。

下面以 Northwind Database 為例:

添加 Orders, Order Details 兩個表。 VS.Net IDE 不能自動檢測 Database 中表間關係,因此 Orders Order Details 兩個表之間在 XSD 文件沒有自動產生任何關係。

4. 手工建立表與表之間的關係

Toolbox 中拖拉一個新的 Relation XSD 編輯界面,並彈出如下 Edit Relation windows form


通過上述 Edit Relation 界面,可以編輯 relationship 參數。

另外,也可以通過 Toolbox XSD 的編輯界面,增加 / 修改 table column 元素。

注意:示例中將上面的 Order Details 元素改名為 OrderDetails ,去除其中的空格,以免一些不必要的麻煩。


Schema (架構)菜單中,單擊 Generate DataSet (生成 DataSet Preview DataSet

為確認已創建該有類型的 DataSet ,可以在解決方案資源管理器中單擊 Show All Files (顯示所有文件)按鈕。 展開 XSD 架構文件的節點,確認存在一個與 XSD 架構相關聯的代碼文件。該代碼文件定義了新的有類型的 DataSet 類。

public class OrderDataSet : DataSet

…… Typed DataSet/OrderDataSet 直接繼承 DataSet Class.


二、使用 Typed DataSet

在使用上述 Typed DataSet 之前,先了解 OrderDataSet.XSD 文件內容。

如下是 Northwind Database Orders table 的架構元素:



上述 XML Schema 會生成 OrdersRow 這一對象名稱 OrderDataSet.OrdersRow ,還有一個名為 Orders DataRowCollection Class
OrderDataSet.Orders
)。

調用上述 Typed DataSet Code snippet

OrderDataSet theOrderDS = new OrderDataSet();

string strSelectOrders = "Select * From Orders ";

strSelectOrders += "Select * From [Order Details]";

SqlHelper.FillDataset(connStr, CommandType.Text, strSelectOrders, theOrderDS, new string[] {"Orders", "OrderDetails"});

StringBuilder strResults = new StringBuilder();


foreach(OrderDataSet.OrdersRow theOrder in theOrderDS.Orders)

{

strResults.Append(theOrder.OrderID.ToString() + " "

+ theOrder.CustomerID.ToString() + " "

+ theOrder.EmployeeID.ToString() + Environment.NewLine);

strResults.Append("Order Details: ");

strResults.Append(theOrder.GetChildRows("OrdertoOrderDetails").GetLength(0).ToString());

strResults.Append(Environment.NewLine);

}


txtResults.Text = strResults.ToString();

代碼比較簡單,上述代碼調用了 SqlHelper Class Microsoft Data Access Application Block )的 FillDataset 方法,來完成 DataSet 的填充。 FillDataSet 方法支持 Typed DataSet ,值得推薦使用。

Any questions or errors, please leave comments. Thanks.

內容圖示
url email imgsrc image code quote
樣本
bold italic underline linethrough   












 [詳情...]
validation picture

注意事項:
預覽不需輸入認證碼,僅真正發送文章時才會檢查驗證碼。
認證碼有效期10分鐘,若輸入資料超過10分鐘,請您備份內容後,重新整理本頁並貼回您的內容,再輸入驗證碼送出。

選項

Powered by XOOPS 2.0 © 2001-2008 The XOOPS Project|