강력한 형식의 데이터 세트 생성

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>  

참고 항목