현재 오프라인 상태입니다. 인터넷에 다시 연결하기를 기다리고 있습니다.

HOWTO: Visual C++ .NET을 사용하여 데이터베이스에서 DataSet 개체 채우기

이 문서의 Microsoft Visual Basic .NET 버전에 대한 내용은 301216을 참조하십시오.
이 문서의 Microsoft Visual C# .NET 버전에 대한 내용은 314145를 참조하십시오.
이 문서에서는 다음 Microsoft .NET Framework 클래스 라이브러리 네임스페이스를 참조합니다.

System.Data.SqlClient

작업 내용

요약
이 문서에서는 하나 이상의 데이터베이스 쿼리의 결과로 DataSet 개체를 채우는 방법과 쿼리가 DataSet 개체에 로드된 후 데이터에 액세스하는 방법을 단계별로 설명합니다. DataSet 개체는 Microsoft .NET Framework에서 데이터 액세스의 핵심적인 부분을 형성하는 테이블, 뷰 및 관계를 보관할 수 있는 메모리 내 개체입니다.

맨 위로
추가 정보

요구 사항

다음은 권장되는 하드웨어, 소프트웨어 및 네트워크 인프라와 필요한 서비스 팩의 목록입니다.
  • Microsoft Windows 2000 Professional, Microsoft Windows 2000 Server, Microsoft Windows 2000 Advanced Server 또는 Microsoft Windows NT 4.0 Server
  • Microsoft SQL Server 7.0, Microsoft SQL Server 2000 또는 Microsoft Data Engine(Pubs 예제 데이터베이스가 설치된 상태)
  • Microsoft Visual Studio .NET
이 문서에서는 사용자가 다음 내용을 잘 알고 있는 것으로 가정합니다.
  • 데이터베이스 용어
  • Microsoft SQL Server
맨 위로

DataSet 채우기

System.Data 네임스페이스에서 다양한 개체를 사용하여 데이터베이스 서버에 연결하고 쿼리를 실행한 다음 결과를 DataSet 개체에 넣을 수 있습니다. DataSet은 연결이 끊어진 개체입니다. 따라서 데이터를 로드한 후에는 데이터를 추가로 로드하거나 메모리 내 정보 복사본의 변경 사항을 서버에 업데이트할 때 데이터베이스에 연결됩니다.

데이터베이스에서 DataSet으로 데이터를 로드하려면 다음과 같이 하십시오.
  1. Visual Studio .NET을 시작합니다.
  2. Visual C++ .NET 2002에서 Managed C++ 응용 프로그램을 새로 만들거나 Visual C++ .NET 2003에서 콘솔 응용 프로그램을 새로 만들 수 있습니다. 프로젝트의 이름을 MyApplication으로 지정한 다음 확인을 누릅니다.
  3. 다음 코드를 MyApplication.cpp 파일에 추가합니다.

    이렇게 하면 System.Dll 네임스페이스, System.Xml 네임스페이스 및 System.Data 네임스페이스에 참조가 추가됩니다.
    #using <System.Dll>#using <System.Data.Dll>#using <System.Xml.Dll>
  4. System 네임스페이스, System.Data 네임스페이스, System.Xml 네임스페이스, System.Collections 네임스페이스 및 System.Data.SqlClient 네임스페이스에 USING 문을 사용하여 나중에 코드에서 이러한 네임스페이스의 선언을 한정하지 않아도 되도록 합니다. 이러한 문은 다른 선언 앞에 사용해야 합니다.
    using namespace System;using namespace System::Data;using namespace System::Xml;using namespace System::Collections;using namespace System::Data::SqlClient;
  5. 데이터베이스에서 DataSet으로 데이터를 이동합니다.

    이렇게 하려면 데이터베이스 연결을 설정해야 합니다. 여기에는 System.Data.SqlClient.SqlCommand 개체와 연결 문자열이 필요합니다. 코드의 연결 문자열은 로컬 컴퓨터(코드를 실행하는 컴퓨터)에 있는 SQL Server를 실행하는 컴퓨터에 연결합니다. 이 연결 문자열을 사용자 환경에 적합하게 수정해야 합니다. SqlConnection 개체를 만들었으면 이 개체의 Open 메서드를 호출하여 실제 데이터베이스 링크를 설정합니다.
    SqlConnection* objConn;String* sConnectionString;sConnectionString = "Password=myPassword;User ID=myUserID;Initial Catalog=pubs;Data Source=(local)";objConn = new SqlConnection(sConnectionString);objConn->Open();
  6. 데이터베이스와 DataSet 개체 사이의 링크를 나타내는 DataAdapter 개체를 만듭니다. DataAdapter 생성자 개체의 일부로 SQL이나 다른 형식의 명령을 지정하여 데이터를 검색하는 데 사용할 수 있습니다. 다음 예제에서는 Pubs 데이터베이스의 Authors 테이블에서 레코드를 검색하는 SQL 문을 사용합니다.
    SqlDataAdapter* daAuthors = new SqlDataAdapter("Select * From Authors", objConn);
  7. DataSet 개체의 인스턴스를 선언한 다음 만듭니다.

    이 작업을 수행할 때 전체 DataSet의 이름을 제공해야 데이터 로드를 시작할 수 있습니다. 이름에 고유 테이블이 여러 개 포함되어 있을 수도 있습니다.
     DataSet* dsPubs = new DataSet("Pubs");
  8. 데이터 로딩을 처리하는 동안 FillSchema를 실행한 다음 Fill을 실행합니다.

    SqlDataAdapter 클래스는 이 데이터의 로딩에 필수적인 Fill 메서드와 FillSchema 메서드를 제공합니다. 두 메서드는 DataSet에 정보를 로드합니다. Fill 메서드는 데이터 자체를 로드하고 FillSchema 메서드는 특정 테이블에 대해 사용할 수 있는 모든 메타데이터(예: 열 이름, 기본 키 및 제약 조건)를 로드합니다.
    daAuthors->FillSchema(dsPubs,SchemaType::Source, "Authors");daAuthors->Fill(dsPubs,"Authors");

    Fill만 사용하는 경우 열 이름과 데이터 형식을 설명하는 데 필요한 기본 메타데이터만 로드할 수 있습니다. Fill 메서드는 기본 키 정보를 로드하지 않습니다. 기본 동작을 변경하려면 DataAdapter 개체의 MissingSchemaAction 속성을 MissingSchemaAction.AddWithKey로 설정하면 됩니다. 이렇게 하면 기본 정보 외에 기본 키 메타데이터가 로드됩니다.
    daAuthors->MissingSchemaAction = MissingSchemaAction::AddWithKey;daAuthors->Fill(dsPubs,"Authors");
    이제 데이터를 DataSet의 Tables 컬렉션에 있는 개별 DataTable 개체로 사용할 수 있습니다. FillSchemaFill에 대한 호출에서 테이블 이름을 지정한 경우에는 이 이름을 사용하여 필요한 특정 테이블에 액세스할 수 있습니다.
     DataTable* tblAuthors = dsPubs->Tables->Item["Authors"]; 
  9. GetEnumerator 함수를 사용하여 DataTable의 Rows 컬렉션에 있는 DataRow 개체에 액세스합니다. while 루프를 사용하여 테이블의 각 행을 반복합니다. 이름이나 위치 인덱스로 열에 액세스할 수 있습니다. 0이 첫 번째 열 위치입니다.
    IEnumerator* iEnum = tblAuthors->Rows->GetEnumerator();         while(iEnum->MoveNext()) {        Console::WriteLine("{0}   {1}",dynamic_cast<String*>(dynamic_cast<DataRow *>(iEnum->Current)->get_Item("au_fname")),                                       dynamic_cast<String*>(dynamic_cast<DataRow *>(iEnum->Current)->get_Item("au_lname"))); }
  10. 프로젝트를 저장합니다. 디버그 메뉴에서 시작을 눌러 프로젝트를 실행합니다.

맨 위로

전체 코드 예제

// This is the main project file for the VC++ application project // that is generated by using the Application wizard.#include "stdafx.h"#using <mscorlib.dll>#include <tchar.h>#using <System.Dll>#using <System.Data.Dll>#using <System.Xml.Dll>using namespace System;using namespace System::Data;using namespace System::Xml;using namespace System::Collections;using namespace System::Data::SqlClient;// This is the entry point for this application.int _tmain(void){    SqlConnection* objConn;    try    {                String* sConnectionString;        sConnectionString = "Password=myPassword;User ID=myUserID;Initial Catalog=pubs;Data Source=(local)";        objConn = new SqlConnection(sConnectionString);        objConn->Open();                SqlDataAdapter* daAuthors = new SqlDataAdapter("Select * From Authors", objConn);        DataSet* dsPubs = new DataSet("Pubs");                daAuthors->FillSchema(dsPubs,SchemaType::Source, "Authors");        daAuthors->Fill(dsPubs,"Authors");        DataTable* tblAuthors = dsPubs->Tables->Item["Authors"];                IEnumerator* iEnum = tblAuthors->Rows->GetEnumerator();                while(iEnum->MoveNext())        {            Console::WriteLine("{0}   {1}",dynamic_cast<String*>(dynamic_cast<DataRow *>(iEnum->Current)->get_Item("au_fname")),                                           dynamic_cast<String*>(dynamic_cast<DataRow *>(iEnum->Current)->get_Item("au_lname")));                    }    }    catch(Exception *ex)    {        Console::WriteLine( ex->Message );    }    __finally    {        objConn->Close();    }        return 0;}

맨 위로
참조
자세한 내용은 다음 Microsoft 웹 사이트를 방문하십시오.

http://msdn2.microsoft.com/en-us/library/ms810293.aspx

http://msdn2.microsoft.com/en-us/library/ms973217.aspx

http://www.microsoft.com/korea/msdn/netframework/default.asp

맨 위로



Microsoft 제품 관련 기술 전문가들과 온라인으로 정보를 교환하시려면 Microsoft 뉴스 그룹에 참여하시기 바랍니다.
속성

문서 ID: 818779 - 마지막 검토: 05/16/2007 03:29:00 - 수정: 2.2

  • Microsoft Visual C++ .NET 2002 Standard Edition
  • Microsoft Visual C++ .NET 2003 Standard Edition
  • Microsoft ADO.NET 1.0
  • Microsoft ADO.NET 1.1
  • kbhowto kbhowtomaster kbsqlclient kbsystemdata KB818779
피드백
cript> /c.microsoft.com/ms.js'" + "'><\/script>");