다음을 통해 공유


OleDbCommandBuilder 클래스

연결된 데이터베이스에서 DataSet의 변경 내용을 조정하는 데 사용되는 단일 테이블 명령을 자동으로 생성합니다. 이 클래스는 상속될 수 없습니다.

네임스페이스: System.Data.OleDb
어셈블리: System.Data(system.data.dll)

구문

‘선언
Public NotInheritable Class OleDbCommandBuilder
    Inherits DbCommandBuilder
‘사용 방법
Dim instance As OleDbCommandBuilder
public sealed class OleDbCommandBuilder : DbCommandBuilder
public ref class OleDbCommandBuilder sealed : public DbCommandBuilder
public final class OleDbCommandBuilder extends DbCommandBuilder
public final class OleDbCommandBuilder extends DbCommandBuilder

설명

OleDbDataAdapter는 관련 데이터 소스를 사용하여 DataSet에 한 변경을 조정하는 데 필요한 SQL 문을 자동으로 생성하지 않습니다. 그러나 OleDbDataAdapterSelectCommand 속성을 설정하면, OleDbCommandBuilder 개체를 만들어 단일 테이블 업데이트용 SQL 문을 자동으로 생성할 수 있습니다. 그러면 설정하지 않은 모든 추가 SQL 문이 OleDbCommandBuilder에 의해 생성됩니다.

DataAdapter 속성을 설정할 때마다 OleDbCommandBuilder가 자체를 RowUpdating 이벤트의 수신기로서 등록합니다. 한 번에 하나의 OleDbDataAdapterOleDbCommandBuilder 개체만을 서로 연결할 수 있습니다.

INSERT, UPDATE 또는 DELETE 문을 생성하려면, OleDbCommandBuilderSelectCommand 속성을 사용하여 필요한 메타데이터 집합을 자동으로 검색합니다. 메타데이터를 검색한 후(예: 처음 업데이트한 후) SelectCommand를 변경하는 경우 RefreshSchema 메서드를 호출하여 메타데이터를 업데이트해야 합니다.

또한 OleDbCommandBuilderSelectCommand에서 참조하는 Connection, CommandTimeoutTransaction 속성도 사용합니다. 이러한 속성 중 하나 이상이 수정되거나 SelectCommand 자체가 바뀐 경우에는 RefreshSchema를 호출해야 합니다. 그렇지 않으면 InsertCommand, UpdateCommandDeleteCommand 속성이 이전의 값을 보유합니다.

Dispose를 호출하면, OleDbCommandBuilderOleDbDataAdapter에서 분리되고 생성된 명령은 더 이상 사용되지 않습니다.

예제

다음 예제에서는 OleDbDataAdapterOleDbConnection과 함께 OleDbCommand를 사용하여 데이터 소스에서 행을 선택합니다. 이 예제에서는 초기화된 DataSet, 연결 문자열, SQL SELECT 문인 쿼리 문자열 및 데이터 소스 테이블의 이름인 문자열이 전달됩니다. 그런 다음 이 예제에서는 OleDbCommandBuilder를 만듭니다.

Public Shared Function UpdateRows(connectionString As String, _
    queryString As String, tableName As String) As DataSet

    Dim dataSet As DataSet = New DataSet

    Using connection As New OleDbConnection(connectionString)
        Dim adapter As New OleDbDataAdapter()
        adapter.SelectCommand = New OleDbCommand(queryString, connection)
        Dim cb As OleDbCommandBuilder = New OleDbCommandBuilder(adapter)

        connection.Open()

        adapter.Fill(dataSet, tableName)

        ' Code to modify data in DataSet here 

        ' Without the OleDbCommandBuilder this line would fail.
        adapter.Update(dataSet, tableName)
    End Using

    Return dataSet
End Function
public static DataSet UpdateRows(string connectionString, 
    string queryString, string tableName)
{
    DataSet dataSet = new DataSet();
    using (OleDbConnection connection = new OleDbConnection(connectionString))
    {
        OleDbDataAdapter adapter = new OleDbDataAdapter();
        adapter.SelectCommand = new OleDbCommand(queryString, connection);
        OleDbCommandBuilder cb = new OleDbCommandBuilder(adapter);

        connection.Open();

        adapter.Fill(dataSet, tableName);

        //code to modify data in DataSet here

        //Without the OleDbCommandBuilder this line would fail
        adapter.Update(dataSet, tableName);

        connection.Close();
    }
    return dataSet;
}

상속 계층 구조

System.Object
   System.MarshalByRefObject
     System.ComponentModel.Component
       System.Data.Common.DbCommandBuilder
        System.Data.OleDb.OleDbCommandBuilder

스레드로부터의 안전성

이 형식의 모든 public static(Visual Basic의 경우 Shared) 멤버는 스레드로부터 안전합니다. 인터페이스 멤버는 스레드로부터 안전하지 않습니다.

플랫폼

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework에서 모든 플래폼의 모든 버전을 지원하지는 않습니다. 지원되는 버전의 목록은 시스템 요구 사항을 참조하십시오.

버전 정보

.NET Framework

2.0, 1.1, 1.0에서 지원

참고 항목

참조

OleDbCommandBuilder 멤버
System.Data.OleDb 네임스페이스

기타 리소스

자동으로 생성되는 명령