강력한 형식의 데이터 세트 생성
XSD(XML 스키마 정의 언어) 표준을 준수하는 XML 스키마가 있는 경우 Windows SDK(소프트웨어 개발 키트)와 함께 제공되는 XSD.exe 도구를 사용하여 강력한 형식의 DataSet을 생성할 수 있습니다.
(데이터베이스 테이블에서 xsd를 만들려면 WriteXmlSchema 또는 Visual Studio에서 데이터 세트 작업을 참조하세요.)
다음 코드는 이 도구를 사용하여 DataSet을 생성하는 구문을 보여 줍니다.
xsd.exe /d /l:CS XSDSchemaFileName.xsd /eld /n:XSDSchema.Namespace
이 구문에서 /d
지시문은 도구에 DataSet을 생성하라는 것을, /l:
은 사용할 언어(예: C# 또는 Visual Basic .NET)를 지정합니다. 선택적 /eld
지시문은 LINQ to DataSet을 사용하여 생성된 DataSet에 대해 쿼리할 수 있음을 지정합니다. 이 옵션은 /d
옵션도 지정된 경우에 사용됩니다. 자세한 내용은 형식이 지정된 데이터 세트 쿼리를 참조하세요. 선택적 /n:
지시문은 도구에 XSDSchema.Namespace라는 DataSet용 네임스페이스도 생성하도록 지시합니다. 이 명령을 실행하면 XSDSchemaFileName.cs가 생성되며, 이 파일을 컴파일하여 ADO.NET 애플리케이션에서 사용할 수 있습니다. 생성된 코드는 라이브러리나 모듈로 컴파일할 수 있습니다.
다음 코드는 생성된 코드를 C# 컴파일러(csc.exe)를 사용하여 라이브러리로 컴파일하는 구문을 보여 줍니다.
csc.exe /t:library XSDSchemaFileName.cs /r:System.dll /r:System.Data.dll
/t:
지시문은 도구에 라이브러리로 컴파일하라는 것을, /r:
지시문은 컴파일에 필요한 종속 라이브러리를 지정합니다. 이 명령을 실행하면 XSDSchemaFileName.dll이 생성되며, 이 dll은 /r:
지시문으로 ADO.NET 애플리케이션을 컴파일할 때 컴파일러로 전달할 수 있습니다.
다음 코드는 ADO.NET 애플리케이션에서 XSD.exe로 전달된 네임스페이스에 액세스하는 구문을 보여 줍니다.
Imports XSDSchema.Namespace
using XSDSchema.Namespace;
다음 코드 예제에서는 CustomerDataSet라는 형식화된 DataSet를 사용하여 Northwind 데이터베이스에서 고객 목록을 로드합니다. Fill 메서드를 사용하여 데이터를 로드하면 이 예제는 형식화된 CustomersRow(DataRow)CustomersRow(DataRow) 개체를 사용하여 Customers 테이블에 있는 각 고객에 대해 루프를 실행합니다. 그러면 DataColumnCollection을 통하지 않고 CustomerID 열에 직접 액세스할 수 있습니다.
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
CustomerDataSet customers = new CustomerDataSet();
SqlDataAdapter adapter = new SqlDataAdapter(
"SELECT * FROM dbo.Customers;",
"Data Source=(local);Integrated " +
"Security=SSPI;Initial Catalog=Northwind");
adapter.Fill(customers, "Customers");
foreach(CustomerDataSet.CustomersRow customerRow in customers.Customers)
Console.WriteLine(customerRow.CustomerID);
다음은 예제에서 사용한 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>