다음을 통해 공유


DataSet 내용 복사(ADO.NET)

DataSet의 복사본을 만들어 원래 데이터에는 영향을 주지 않고 데이터로 작업하거나 DataSet에 들어 있는 데이터의 하위 집합으로 작업할 수 있습니다. DataSet을 복사하면 다음 작업을 수행할 수 있습니다.

  • 스키마, 데이터, 행 상태 정보 및 행 버전을 포함하여 DataSet과 똑같은 복사본을 만듭니다.

  • 기존 DataSet의 스키마는 포함하지만 수정된 행만 포함하는 DataSet을 만듭니다. 수정된 모든 행을 반환하거나 특정 DataRowState를 지정할 수 있습니다. 행 상태에 대한 자세한 내용은 행 상태 및 행 버전을 참조하십시오.

  • 행은 복사하지 않고 DataSet의 스키마나 관계형 구조만 복사합니다. ImportRow를 사용하여 행을 기존 DataTable로 가져올 수 있습니다.

스키마와 데이터가 모두 포함된 DataSet과 동일한 복사본을 만들려면 DataSetCopy 메서드를 사용합니다. 다음 코드 예제에서는 DataSet과 동일한 복사본을 만드는 방법을 보여 줍니다.

Dim copyDataSet As DataSet = customerDataSet.Copy()
DataSet copyDataSet = customerDataSet.Copy();

스키마와 Added, Modified 또는 Deleted 행을 나타내는 데이터만 포함된 DataSet의 복사본을 만들려면 DataSetGetChanges 메서드를 사용합니다. 또한 GetChanges를 사용하여 GetChanges를 호출할 때 DataRowState 값을 전달하여 지정한 행 상태의 행만 반환할 수 있습니다. 다음 코드 예제에서는 GetChanges를 호출할 때 DataRowState를 전달하는 방법을 보여 줍니다.

' Copy all changes.
Dim changeDataSet As DataSet = customerDataSet.GetChanges()
' Copy only new rows.
Dim addedDataSetAs DataSet = _
    customerDataSet.GetChanges(DataRowState.Added)
// Copy all changes.
DataSet changeDataSet = customerDataSet.GetChanges();
// Copy only new rows.
DataSet addedDataSet= customerDataSet.GetChanges(DataRowState.Added);

스키마만 포함하는 DataSet의 복사본을 만들려면 DataSetClone 메서드를 사용합니다. DataTableImportRow 메서드를 사용하여 기존 행을 복제된 DataSet에 추가할 수도 있습니다. ImportRow는 데이터, 행 상태 및 행 버전 정보를 지정한 테이블에 추가합니다. 열 값은 열 이름이 일치하고 데이터 형식이 호환되는 위치에만 추가됩니다.

다음 코드 예제에서는 DataSet의 복제를 만든 다음 원래 DataSet의 행을 CountryRegion 열 값이 "Germany"인 고객의 DataSet 복제에 있는 Customers 테이블에 추가합니다.

Dim germanyCustomers As DataSet = customerDataSet.Clone()

Dim copyRows() As DataRow = _
  customerDataSet.Tables("Customers").Select("CountryRegion = 'Germany'")

Dim customerTable As DataTable = germanyCustomers.Tables("Customers")
Dim copyRow As DataRow

For Each copyRow In copyRows
  customerTable.ImportRow(copyRow)
Next
DataSet germanyCustomers = customerDataSet.Clone();

DataRow[] copyRows = 
  customerDataSet.Tables["Customers"].Select("CountryRegion = 'Germany'");

DataTable customerTable = germanyCustomers.Tables["Customers"];

foreach (DataRow copyRow in copyRows)
  customerTable.ImportRow(copyRow);

참고 항목

참조

DataSet

DataTable

기타 리소스

DataSets, DataTables 및 DataViews(ADO.NET)