다음을 통해 공유


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

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>  

참고 항목