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

Google 自訂搜尋

Goole 廣告

隨機相片
IMG_60D_00094.jpg

授權條款

使用者登入
使用者名稱:

密碼:


忘了密碼?

現在就註冊!

Dot Net? : [轉貼]輕鬆玩轉Typed DataSet

發表者 討論內容
冷日
(冷日)
Webmaster
  • 註冊日: 2008/2/19
  • 來自:
  • 發表數: 15776
[轉貼]輕鬆玩轉Typed DataSet
輕鬆玩轉 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.

前一個主題 | 下一個主題 | | | |

討論串




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