다음을 통해 공유


강력한 형식의 데이터셋 생성

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 지시문은 생성된 DataSet에 대해 LINQ to DataSet을 사용하여 쿼리할 수 있도록 지정합니다. 이 옵션은 /d 옵션이 지정된 경우에 사용됩니다. 자세한 내용은 형식화된 데이터 세트 쿼리를 참조하세요. 선택적 /n: 지시문은 DataSetXSDSchema.Namespace로 명명된 네임스페이스도 생성하도록 도구에 지시합니다. 명령의 출력은 ADO.NET 애플리케이션에서 컴파일 및 사용할 수 있는 XSDSchemaFileName.cs. 생성된 코드를 라이브러리 또는 모듈로 컴파일할 수 있습니다.

다음 코드는 C# 컴파일러(csc.exe)를 사용하여 생성된 코드를 라이브러리로 컴파일하는 구문을 보여 줍니다.

csc.exe /t:library XSDSchemaFileName.cs /r:System.dll /r:System.Data.dll

지시문은 /t: 도구에 라이브러리로 컴파일하도록 지시하고 /r: 지시문은 컴파일에 필요한 종속 라이브러리를 지정합니다. 명령의 출력은 XSDSchemaFileName.dll이며, /r: 지시문을 사용하여 ADO.NET 애플리케이션을 컴파일할 때 컴파일러에 전달할 수 있습니다.

다음 코드는 ADO.NET 애플리케이션에서 XSD.exe 전달된 네임스페이스에 액세스하기 위한 구문을 보여줍니다.

Imports XSDSchema.Namespace
using XSDSchema.Namespace;

DataSet 형식의 CustomerDataSet 명명된 객체를 사용하여 Northwind 데이터베이스에서 고객 목록을 로드하는 다음 코드 예제를 살펴보세요. 메서드를 사용하여 Fill 데이터가 로드되면 예제는 형식화된 Customers (CustomersRow) 개체를 사용하여 테이블의 각 고객을 반복합니다. 이렇게 하면 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
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>

참고하십시오