다음을 통해 공유


DataAdapter.Update(DataSet) 메서드

정의

"Table"이라는 DataSet의 지정된 DataTable에서 삽입, 업데이트 또는 삭제된 각 행에 대해 각각 INSERT, UPDATE 또는 DELETE 문을 호출합니다.

public:
 virtual int Update(System::Data::DataSet ^ dataSet);
public:
 abstract int Update(System::Data::DataSet ^ dataSet);
public virtual int Update (System.Data.DataSet dataSet);
public abstract int Update (System.Data.DataSet dataSet);
abstract member Update : System.Data.DataSet -> int
override this.Update : System.Data.DataSet -> int
abstract member Update : System.Data.DataSet -> int
Public Overridable Function Update (dataSet As DataSet) As Integer
Public MustOverride Function Update (dataSet As DataSet) As Integer

매개 변수

dataSet
DataSet

데이터 소스를 업데이트하는 데 사용된 DataSet입니다.

반환

DataSet에서 성공적으로 업데이트된 행의 수를 반환합니다.

구현

예외

소스 테이블이 잘못된 경우

INSERT, UPDATE 또는 DELETE 문을 실행한 결과 영향을 받은 레코드가 없는 경우

예제

다음 예제에서는 파생된 클래스 OleDbDataAdapterUpdate 데이터 원본입니다.

static private DataSet CreateCommandAndUpdate(
    string connectionString,
    string queryString)
{
    DataSet dataSet = new DataSet();

    using (OleDbConnection connection =
               new OleDbConnection(connectionString))
    {
        connection.Open();
        OleDbDataAdapter adapter =
            new OleDbDataAdapter();
        adapter.SelectCommand =
            new OleDbCommand(queryString, connection);
        OleDbCommandBuilder builder =
            new OleDbCommandBuilder(adapter);

        adapter.Fill(dataSet);

        // Code to modify data in the DataSet here.

        // Without the OleDbCommandBuilder, this line would fail.
        adapter.UpdateCommand = builder.GetUpdateCommand();
        adapter.Update(dataSet);
    }
    return dataSet;
}
Public Function CreateCommandAndUpdate( _
    ByVal connectionString As String, _
    ByVal queryString As String) As DataSet

    Dim dataSet As New DataSet()

    Using connection As New OleDbConnection(connectionString)
        connection.Open()
        Dim adapter As New OleDbDataAdapter()

        adapter.SelectCommand = New OleDbCommand( _
            queryString, connection)

        Dim builder As OleDbCommandBuilder = _
            New OleDbCommandBuilder(adapter)

        adapter.Fill(dataSet)

        ' Code to modify the data in the DataSet here. 

        ' Without the OleDbCommandBuilder this line would fail.
        builder.GetUpdateCommand()
        adapter.Update(dataSet)
    End Using
    Return dataSet
End Function

설명

업데이트는 행별로 수행됩니다. 삽입, 수정 및 삭제된 모든 행에 대해 메서드는 해당 행 Update 에 대해 수행된 변경 유형(삽입, 업데이트 또는 삭제)을 결정합니다. 변경 Insert유형에 따라 , Update, 또는 Delete 명령 템플릿이 실행되어 수정된 행을 데이터 원본으로 전파합니다. 애플리케이션 호출 하는 경우는 Update 메서드를 DataAdapter 검사를 RowState 속성 합니다 에서구성된인덱스순서에따라각행에대해반복적으로필요한INSERT,UPDATE또는DELETE문을실행하고DataSet. 예를 들어 에서 Update 행의 순서로 인해 DELETE 문과 INSERT 문, 또 다른 DELETE 문을 실행할 수 있습니다 DataTable.

이러한 문은 일괄 처리 프로세스로 수행되지 않습니다. 각 행은 개별적으로 업데이트됩니다. 애플리케이션에서 호출할 수는 GetChanges 명령문의 시퀀스를 제어 해야 하는 경우에 메서드 (예를 들어 업데이트 하기 전에 삽입). 자세한 내용은 Dataadapter 사용 하 여 데이터 원본 업데이트합니다.

하는 경우 INSERT, UPDATE 또는 DELETE 문이 지정 되지 않았습니다는 Update 메서드 예외를 생성 합니다. 만들 수 있습니다는 SqlCommandBuilder 또는 OleDbCommandBuilder 설정 하는 경우 단일 테이블 업데이트에 대 한 SQL 문을 자동으로 생성 하는 개체는 SelectCommand .NET Framework 데이터 공급자의 속성입니다. 그런 다음 설정하지 않은 추가 SQL 문은 CommandBuilder에 의해 생성됩니다. 이 세대 논리에 키 열 정보가 필요 합니다 DataSet합니다. 자세한 내용은 참조 commandbuilder를 사용 하를 사용 하 여 명령 생성합니다.

Update 메서드 업데이트를 수행 하기 전에 첫 번째 매핑의에 나열 된 테이블에서 행을 검색 합니다. 그런 다음 속성 Update 값을 사용하여 행을 UpdatedRowSource 새로 고칩니다. 반환 되는 모든 추가 행은 무시 됩니다.

모든 데이터에 다시 로드 된 후는 DataSet, OnRowUpdated 이벤트가 발생 하는 조정 된 검사할 수 있도록 DataSet 행 및 모든 출력 매개 변수는 명령으로 반환 합니다. 행을 성공적으로 업데이트 한 후 해당 행 변경 내용이 허용 됩니다.

사용 하는 경우 Update, 실행 순서는 다음과 같습니다.

  1. 값을 DataRow 매개 변수 값으로 이동 됩니다.

  2. OnRowUpdating 이벤트가 발생합니다.

  3. 명령을 실행합니다.

  4. 명령이 로 FirstReturnedRecord설정된 경우 첫 번째 반환된 결과가 에 DataRow배치됩니다.

  5. 에 배치 됩니다 출력 매개 변수가 있는 경우는 DataRow합니다.

  6. OnRowUpdated 이벤트가 발생합니다.

  7. DataRow.AcceptChanges을 호출합니다. 그러면 업데이트된 에 DataTable.RowChanging 대한 및 DataTable.RowChanged 이벤트가 모두 발생 DataRow합니다.

와 연결된 DataAdapter 각 명령에는 일반적으로 연결된 매개 변수 컬렉션이 있습니다. 매개 변수는 .NET 데이터 공급자 Parameter 클래스의 및 SourceVersion 속성을 통해 SourceColumn 현재 행에 매핑됩니다. SourceColumn 참조를 DataTable 열은는 DataAdapter 현재 행에 대 한 매개 변수 값을 가져오기에 대 한 참조입니다.

SourceColumn 테이블 매핑을 적용 하려면 먼저 매핑되지 않은 열 이름으로 참조 합니다. 하는 경우 SourceColumn 참조를 존재 하지 않는 열에 수행 되는 동작에 따라 달라 집니다 다음 중 하나 MissingMappingAction 값입니다.

열거형 값 수행한 작업
MissingMappingAction.Passthrough 원본 열 이름 및 테이블 이름을 사용 하 여는 DataSet 매핑이 있는 경우.
MissingMappingAction.Ignore SystemException 생성 됩니다. 매핑이 명시적으로 설정되면 입력 매개 변수에 대한 누락된 매핑은 일반적으로 오류의 결과입니다.
MissingMappingAction.Error SystemException 생성 됩니다.

합니다 SourceColumn 속성은 또한 출력에 대 한 값을 매핑할 사용 또는 입/출력 매개 변수를는 DataSet합니다. 존재 하지 않는 열을 참조 하는 경우 예외가 생성 됩니다.

.NET 데이터 공급자 클래스의 속성은 SourceVersion 열 값의 Parameter Original, Current 또는 Proposed 버전을 사용할지 여부를 결정합니다. 이 기능은 낙관적 동시성 위반을 검사 위해 UPDATE 문의 WHERE 절에 원래 값을 포함하는 데 자주 사용됩니다.

메서드 또는 메서드를 AcceptChanges 호출하면 또는 DataTable의 모든 변경 내용이 DataSet 커밋 AcceptChanges 됩니다. 메서드를 호출하기 전에 Update 이러한 메서드 중 하나를 호출하는 경우 또는 AcceptChanges 가 호출된 이후 AcceptChanges 추가 변경 내용이 없는 한 메서드가 호출될 때 Update 변경 내용이 커밋되지 않습니다.

참고

행을 업데이트 하는 동안 오류가 발생 하는 경우 예외가 throw 되 고 업데이트의 실행이 중단 되었습니다. 오류가 발생 하는 경우 예외를 생성 하지 않고 업데이트 작업을 계속 하려면 설정 합니다 ContinueUpdateOnError 속성을 true 호출 하기 전에 Update입니다. 내에서 행당 별로 오류에 응답할 수도 있습니다는 RowUpdated DataAdapter의 이벤트입니다. 내에서 예외를 생성 하지 않고 업데이트 작업을 계속 하려면를 RowUpdated 이벤트를 설정 합니다 Status 의 속성을 RowUpdatedEventArgsContinue입니다.

의 데이터 원본에 전파하는 모든 열에 대해 Update, 또는 DeleteCommand에 매개 변수를 InsertCommandUpdateCommand추가해야 합니다. SourceColumn 매개 변수의 속성을 열 이름으로 설정해야 합니다. 이 설정은 매개 변수의 값이 수동으로 설정되지 않고 현재 처리된 행의 특정 열에서 가져온다는 것을 나타냅니다.

적용 대상

추가 정보