欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

玩转Typed DataSet的简易指南,第一部分

最编程 2024-08-04 18:16:12
...

通过上述Edit Relation界面,可以编辑relationship参数。

另外,也可以通过ToolboxXSD的编辑界面,增加/修改tablecolumn元素。

 

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

 

Schema(架构)菜单中,单击 Generate DataSet(生成 DataSetPreview DataSet

为确认已创建该有类型的 DataSet,可以在解决方案资源管理器中单击 Show All Files(显示所有文件)按钮。展开 XSD 架构文件的节点,确认存在一个与 XSD 架构相关联的代码文件。该代码文件定义了新的有类型的 DataSet 类。

public class OrderDataSet : DataSet

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

 

二、使用Typed DataSet

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

如下是Northwind DatabaseOrders table的架构元素:

<xs:element name="Orders">

<xs:complexType>

         <xs:sequence>

         <xs:element name="OrderID" msdata:ReadOnly="true" msdata:AutoIncrement="true" type="xs:int" />

         <xs:element name="CustomerID" type="xs:string" minOccurs="0" />

         <xs:element name="EmployeeID" type="xs:int" minOccurs="0" />

         <xs:element name="OrderDate" type="xs:dateTime" minOccurs="0" />

         <xs:element name="RequiredDate" type="xs:dateTime" minOccurs="0" />

         <xs:element name="ShippedDate" type="xs:dateTime" minOccurs="0" />

         <xs:element name="ShipVia" type="xs:int" minOccurs="0" />

         <xs:element name="Freight" type="xs:decimal" minOccurs="0" />

         <xs:element name="ShipName" type="xs:string" minOccurs="0" />

         <xs:element name="ShipAddress" type="xs:string" minOccurs="0" />

         <xs:element name="ShipCity" type="xs:string" minOccurs="0" />

         <xs:element name="ShipRegion" type="xs:string" minOccurs="0" />

         <xs:element name="ShipPostalCode" type="xs:string" minOccurs="0" />

         <xs:element name="ShipCountry" type="xs:string" minOccurs="0" />

         </xs:sequence>

</xs:complexType>

</xs:element>

上述XML Schema会生成OrdersRow这一对象名称OrderDataSet.OrdersRow,还有一个名为OrdersDataRowCollection ClassOrderDataSet.Orders)。

 

调用上述Typed DataSetCode 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 ClassMicrosoft Data Access Application Block)的FillDataset方法,来完成DataSet的填充。FillDataSet方法支持Typed DataSet,值得推荐使用。

 

Any questions or errors, please leave comments. Thanks.