学习ADO.NET时,你可能会遇到XML架构问题,这里将介绍解决方法,在这里拿出来和大家分享一下。如果给定符合ADO.NET XML架构定义语言 (XSD) 标准的ADO.NET XML架构,您就可以使用随 Windows 软件开发工具包 (SDK) 提供的 XSD.exe 工具生成强类型 DataSet。以下代码显示使用该工具生成 DataSet 的语法。
- xsd.exe /d /l:CS XSDSchemaFileName.xsd /eld /n:XSDSchema.Namespace
#T#
在此语法中,/d 指令指示该工具生成 DataSet,/l: 告诉该工具要使用哪种语言(例如 C# 或 Visual Basic .NET)。 可选 /eld 指令指定您可以使用 LINQ to DataSet 对生成的 DataSet 进行查询。 当同时指定 /d 选项时可使用此选项。 有关更多信息,请参见查询类型化数据集。 可选的 /n: 指令指示该工具还要为名为 XSDSchema.Namespace 的 DataSet 生成命名空间。 命令的输出为 XSDSchemaFileName.cs,该输出可以在 ADO.NET 应用程序中编译和使用。 所生成的代码可以编译成库或模块。
以下代码显示访问向 ADO.NET 应用程序中的 XSD.exe 传递的命名空间的语法。
- Imports XSDSchema.Namespace
以下代码示例使用名为 CustomerDataSet 的类型化 DataSet 来加载 Northwind 数据库中客户的列表。 当使用 Fill 方法加载数据后,该示例会使用类型化 CustomersRow (DataRow) 对象循环通过 Customers 表中的每个客户。 它提供了对 CustomerID 列的直接访问,而不是通过 DataColumnCollection 来访问。
- Dim customers As CustomerDataSet= New CustomerDataSet()
- Dim adapter As SqlDataAdapter New SqlDataAdapter( _
- "SELECT * FROM dbo.Customers;", _
- "Data Source=(local);Integrated " & _
- "Security=SSPI;Initial Catalog=Northwind")
- adapter.Fill(customers, "Customers")
- Dim customerRow As CustomerDataSet.CustomersRow
- For Each customerRow In customers.Customers
- Console.WriteLine(customerRow.CustomerID)
- Next
下面是用于该示例的ADO.NET XML架构。
- <?xml version="1.0" encoding="utf-8"?>
- <xs:schema id="CustomerDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema"
- xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> <xs:element name="CustomerDataSet"
- msdata:IsDataSet="true"> <xs:complexType> <xs:choice
- maxOccurs="unbounded"> <xs:element name="Customers">
- <xs:complexType> <xs:sequence> <xs:element
- name="CustomerID" type="xs:string" minOccurs="0" />
- </xs:sequence> </xs:complexType>
- </xs:element>
- </xs:choice> </xs:complexType> </xs:element>
- </xs:schema>