DataSet.Load Yöntem

Tanım

Sağlanan IDataReaderkullanarak bir DataSet veri kaynağındaki değerlerle doldurur.

Aşırı Yüklemeler

Load(IDataReader, LoadOption, DataTable[])

DataSet Şema ve ad alanı bilgilerini sağlamak için bir dizi örneği kullanarak sağlanan IDataReaderkullanarak bir DataTable veri kaynağındaki değerlerle doldurur.

Load(IDataReader, LoadOption, String[])

DataSet içindeki tabloların DataSetadlarını sağlamak için bir dize dizisi kullanarak sağlanan IDataReaderöğesini kullanarak bir veri kaynağındaki değerlerle doldurur.

Load(IDataReader, LoadOption, FillErrorEventHandler, DataTable[])

DataSet Şema ve ad alanı bilgilerini sağlamak için bir dizi örneği kullanarak sağlanan IDataReaderkullanarak bir DataTable veri kaynağındaki değerlerle doldurur.

Açıklamalar

yöntemi, Load bir örnekten alınan verilerle tek DataTable bir öğeyi doldurmak için bir IDataReader teknik sağlar. Bu yöntem aynı işlevselliği sağlar, ancak içinden birden çok tabloya DataSetbirden çok sonuç kümesi IDataReader yüklemenize olanak tanır.

DataSet zaten satırları içeriyorsa, veri kaynağından gelen veriler mevcut satırlarla birleştirilir.

Load yöntemi, belirli bir veri kaynağından veri alma ve geçerli veri kapsayıcısına ekleme (bu örnekte, bir DataSet) etrafında ortalanmış birçok yaygın senaryoda kullanılabilir. Bu senaryolar, güncelleştirme ve birleştirme davranışını açıklayan bir DataSetiçin standart kullanımı açıklar.

Tek DataSet bir birincil veri kaynağıyla eşitlenir veya güncelleştirilir. Değişiklikleri DataSet izler ve birincil veri kaynağıyla eşitlemeye izin verir. Ayrıca, bir DataSet veya daha fazla ikincil veri kaynağından artımlı verileri kabul edebilir. DataSet, ikincil veri kaynağıyla eşitlemeye izin vermek için değişiklikleri izlemekle sorumlu değildir.

Bu iki kuramsal veri kaynağı söz konusu olduğunda, bir kullanıcının muhtemelen aşağıdaki davranışlardan birini yapması gerekir:

  • Birincil veri kaynağından başlatın DataSet . Bu senaryoda, kullanıcı birincil veri kaynağındaki değerlerle boş DataSet bir başlatma yapmak istiyor. Bir veya daha fazla DataTable içeriği değiştirildi. Daha sonra kullanıcı değişiklikleri tekrar birincil veri kaynağına yaymayı amaçlar.

  • Değişiklikleri koruyun ve birincil veri kaynağından tekrar eşitleyin. Bu senaryoda, kullanıcı önceki senaryodaki DataSet doldurulmuş değerini almak ve birincil veri kaynağıyla artımlı eşitleme gerçekleştirmek ve içinde DataSetyapılan değişiklikleri korumak istiyor.

  • İkincil veri kaynaklarından artımlı veri akışı. Bu senaryoda, kullanıcı bir veya daha fazla ikincil veri kaynağından değişiklikleri birleştirmek ve bu değişiklikleri tekrar birincil veri kaynağına yaymak istiyor.

Load yöntemi tüm bu senaryoları mümkün kılar. Bu yöntem, zaten bir içindeki satırların yüklenen satırlarla nasıl birleştirildiğini gösteren bir DataTable yükleme seçeneği parametresi belirtmenize olanak tanır. Aşağıdaki tabloda, sabit listesi tarafından LoadOption sağlanan üç yükleme seçeneği açıklanmaktadır. Her durumda; açıklama, gelen verilerdeki bir satırın birincil anahtarı varolan bir satırın birincil anahtarıyla eşleştiğinde görülen çalışma biçimini belirtir.

Yükleme Seçeneği Description
PreserveChanges (varsayılan) Satır özgün sürümünü gelen satırın değeriyle güncelleştirir.
OverwriteChanges Satırın geçerli ve özgün sürümlerini gelen satırın değeriyle güncelleştirir.
Upsert Satırın geçerli sürümünü gelen satırın değeriyle güncelleştirir.

Genel olarak ve OverwriteChanges seçenekleri, PreserveChanges kullanıcının ve değişikliklerini birincil veri kaynağıyla eşitlemesi DataSet gereken senaryolara yöneliktir. bu Upsert seçenek, bir veya daha fazla ikincil veri kaynağından yapılan değişiklikleri toplamayı kolaylaştırır.

Load(IDataReader, LoadOption, DataTable[])

Kaynak:
DataSet.cs
Kaynak:
DataSet.cs
Kaynak:
DataSet.cs

DataSet Şema ve ad alanı bilgilerini sağlamak için bir dizi örneği kullanarak sağlanan IDataReaderkullanarak bir DataTable veri kaynağındaki değerlerle doldurur.

public:
 void Load(System::Data::IDataReader ^ reader, System::Data::LoadOption loadOption, ... cli::array <System::Data::DataTable ^> ^ tables);
public void Load (System.Data.IDataReader reader, System.Data.LoadOption loadOption, params System.Data.DataTable[] tables);
member this.Load : System.Data.IDataReader * System.Data.LoadOption * System.Data.DataTable[] -> unit
Public Sub Load (reader As IDataReader, loadOption As LoadOption, ParamArray tables As DataTable())

Parametreler

reader
IDataReader

Bir IDataReader veya daha fazla sonuç kümesi sağlayan.

loadOption
LoadOption

içindeki örneklerde DataTableDataSet bulunan satırların aynı birincil anahtarı paylaşan gelen satırlarla nasıl birleştirileceğini gösteren numaralandırmadaki bir değerLoadOption.

tables
DataTable[]

Yöntemin DataTable ad ve ad alanı bilgilerini aldığı örnek Load(IDataReader, LoadOption, DataTable[]) dizisi. Bu tabloların her biri, tarafından DataSetkapsanan öğesinin DataTableCollection bir üyesi olmalıdır.

Örnekler

Aşağıdaki örnek yeni DataSetbir oluşturur, öğesine DataSetiki DataTable örnek ekler ve ardından iki sonuç kümesi içeren bir DataTableReader dosyasından veri alarak yöntemini kullanarak Load öğesini doldururDataSet. Son olarak, örnek konsol penceresinde tabloların içeriğini görüntüler.

static void Main()
{
    DataSet dataSet = new DataSet();

    DataTable customerTable = new DataTable();
    DataTable productTable = new DataTable();

    // This information is cosmetic, only.
    customerTable.TableName = "Customers";
    productTable.TableName = "Products";

    // Add the tables to the DataSet:
    dataSet.Tables.Add(customerTable);
    dataSet.Tables.Add(productTable);

    // Load the data into the existing DataSet.
    DataTableReader reader = GetReader();
    dataSet.Load(reader, LoadOption.OverwriteChanges,
        customerTable, productTable);

    // Print out the contents of each table:
    foreach (DataTable table in dataSet.Tables)
    {
        PrintColumns(table);
    }

    Console.WriteLine("Press any key to continue.");
    Console.ReadKey();
}

private static DataTable GetCustomers()
{
    // Create sample Customers table.
    DataTable table = new DataTable();
    table.TableName = "Customers";

    // Create two columns, ID and Name.
    DataColumn idColumn = table.Columns.Add("ID", typeof(int));
    table.Columns.Add("Name", typeof(string));

    // Set the ID column as the primary key column.
    table.PrimaryKey = new DataColumn[] { idColumn };

    table.Rows.Add(new object[] { 0, "Mary" });
    table.Rows.Add(new object[] { 1, "Andy" });
    table.Rows.Add(new object[] { 2, "Peter" });
    table.AcceptChanges();
    return table;
}

private static DataTable GetProducts()
{
    // Create sample Products table.
    DataTable table = new DataTable();
    table.TableName = "Products";

    // Create two columns, ID and Name.
    DataColumn idColumn = table.Columns.Add("ID",
        typeof(int));
    table.Columns.Add("Name", typeof(string));

    // Set the ID column as the primary key column.
    table.PrimaryKey = new DataColumn[] { idColumn };

    table.Rows.Add(new object[] { 0, "Wireless Network Card" });
    table.Rows.Add(new object[] { 1, "Hard Drive" });
    table.Rows.Add(new object[] { 2, "Monitor" });
    table.Rows.Add(new object[] { 3, "CPU" });
    table.AcceptChanges();
    return table;
}

private static void PrintColumns(DataTable table)
{
    Console.WriteLine();
    Console.WriteLine(table.TableName);
    Console.WriteLine("=========================");
    // Loop through all the rows in the table:
    foreach (DataRow row in table.Rows)
    {
        for (int i = 0; i < table.Columns.Count; i++)
        {
            Console.Write(row[i] + " ");
        }
        Console.WriteLine();
    }
}

private static DataTableReader GetReader()
{
    // Return a DataTableReader containing multiple
    // result sets, just for the sake of this demo.
    DataSet dataSet = new DataSet();
    dataSet.Tables.Add(GetCustomers());
    dataSet.Tables.Add(GetProducts());
    return dataSet.CreateDataReader();
}
Sub Main()
    Dim dataSet As New DataSet

    Dim customerTable As New DataTable
    Dim productTable As New DataTable

    ' This information is cosmetic, only.
    customerTable.TableName = "Customers"
    productTable.TableName = "Products"

    ' Add the tables to the DataSet:
    dataSet.Tables.Add(customerTable)
    dataSet.Tables.Add(productTable)

    ' Load the data into the existing DataSet. 
    Dim reader As DataTableReader = GetReader()
    dataSet.Load(reader, LoadOption.OverwriteChanges, _
        customerTable, productTable)

    ' Print out the contents of each table:
    For Each table As DataTable In dataSet.Tables
        PrintColumns(table)
    Next

    Console.WriteLine("Press any key to continue.")
    Console.ReadKey()
End Sub

Private Function GetCustomers() As DataTable
    ' Create sample Customers table.
    Dim table As New DataTable
    table.TableName = "Customers"

    ' Create two columns, ID and Name.
    Dim idColumn As DataColumn = table.Columns.Add("ID", _
        GetType(Integer))
    table.Columns.Add("Name", GetType(String))

    ' Set the ID column as the primary key column.
    table.PrimaryKey = New DataColumn() {idColumn}

    table.Rows.Add(New Object() {0, "Mary"})
    table.Rows.Add(New Object() {1, "Andy"})
    table.Rows.Add(New Object() {2, "Peter"})
    table.AcceptChanges()
    Return table
End Function

Private Function GetProducts() As DataTable
    ' Create sample Products table, in order
    ' to demonstrate the behavior of the DataTableReader.
    Dim table As New DataTable
    table.TableName = "Products"

    ' Create two columns, ID and Name.
    Dim idColumn As DataColumn = table.Columns.Add("ID", _
        GetType(Integer))
    table.Columns.Add("Name", GetType(String))

    ' Set the ID column as the primary key column.
    table.PrimaryKey = New DataColumn() {idColumn}

    table.Rows.Add(New Object() {0, "Wireless Network Card"})
    table.Rows.Add(New Object() {1, "Hard Drive"})
    table.Rows.Add(New Object() {2, "Monitor"})
    table.Rows.Add(New Object() {3, "CPU"})
    Return table
End Function

Private Function GetReader() As DataTableReader
    ' Return a DataTableReader containing multiple
    ' result sets, just for the sake of this demo.
    Dim dataSet As New DataSet
    dataSet.Tables.Add(GetCustomers())
    dataSet.Tables.Add(GetProducts())
    Return dataSet.CreateDataReader()
End Function

Private Sub PrintColumns( _
   ByVal table As DataTable)

    Console.WriteLine()
    Console.WriteLine(table.TableName)
    Console.WriteLine("=========================")
    ' Loop through all the rows in the table.
    For Each row As DataRow In table.Rows
        For Each col As DataColumn In table.Columns
            Console.Write(row(col).ToString() & " ")
        Next
        Console.WriteLine()
    Next
End Sub

Açıklamalar

yöntemi, Load bir örnekten alınan verilerle tek DataTable bir öğeyi doldurmak için bir IDataReader teknik sağlar. Bu yöntem aynı işlevselliği sağlar, ancak içinden birden çok tabloya DataSetbirden çok sonuç kümesi IDataReader yüklemenize olanak tanır.

Not

Gelen reader kaynak veri sütunlarından herhangi biri hesaplanan sütunlarsa, yükleme işlemi başarısız InvalidOperationException olur.

parametresi, loadOption içeri aktarılan verilerin mevcut verilerle nasıl etkileşim kurmasını istediğinizi belirtmenize olanak tanır ve numaralandırmadaki LoadOption değerlerden herhangi biri olabilir. Bu parametreyi DataTableLoad kullanma hakkında daha fazla bilgi için yöntemin belgelerine bakın.

tables parametresi, okuyucudan yüklenen her sonuç kümesine karşılık gelen tabloların sırasını belirten bir örnek dizisi DataTable belirtmenize olanak tanır. yöntemi, Load sağlanan DataTable her örneği kaynak veri okuyucudan alınan tek bir sonuç kümesindeki verilerle doldurur. Her sonuç kümesinden Load sonra yöntem, başka sonuç kümesi kalmayıncaya kadar okuyucunun içindeki bir sonraki sonuç kümesine geçer.

Bu yöntemin ad çözümleme düzeni, ardından sınıfının yöntemiyle FillDbDataAdapter aynıdır.

Ayrıca bkz.

Şunlara uygulanır

Load(IDataReader, LoadOption, String[])

Kaynak:
DataSet.cs
Kaynak:
DataSet.cs
Kaynak:
DataSet.cs

DataSet içindeki tabloların DataSetadlarını sağlamak için bir dize dizisi kullanarak sağlanan IDataReaderöğesini kullanarak bir veri kaynağındaki değerlerle doldurur.

public:
 void Load(System::Data::IDataReader ^ reader, System::Data::LoadOption loadOption, ... cli::array <System::String ^> ^ tables);
public void Load (System.Data.IDataReader reader, System.Data.LoadOption loadOption, params string[] tables);
member this.Load : System.Data.IDataReader * System.Data.LoadOption * string[] -> unit
Public Sub Load (reader As IDataReader, loadOption As LoadOption, ParamArray tables As String())

Parametreler

reader
IDataReader

Bir IDataReader veya daha fazla sonuç kümesi sağlayan.

loadOption
LoadOption

içindeki örneklerde DataTableDataSet bulunan satırların aynı birincil anahtarı paylaşan gelen satırlarla nasıl birleştirileceğini gösteren numaralandırmadaki bir değerLoadOption.

tables
String[]

Yönteminin tablo adı bilgilerini aldığı dize dizisi Load .

Örnekler

Aşağıdaki Konsol uygulaması örneği önce yöntemini kullanarak Load tabloları oluşturur ve bir okuyucudan içine DataSetveri yükler. Örnek daha sonra bir DataSet öğesine tablo ekler ve tabloları bir DataTableReaderiçindeki verilerle doldurmaya çalışır. Bu örnekte, yöntemine Load geçirilen parametreler var olmayan bir tablo adını gösterdiğinden, Load yöntem parametre olarak geçirilen adla eşleşecek yeni bir tablo oluşturur. Veriler yüklendikten sonra örnek, konsol penceresinde tüm tablolarının içeriğini görüntüler.

static void Main()
{
    DataSet dataSet = new DataSet();

    DataTableReader reader = GetReader();

    // The tables listed as parameters for the Load method
    // should be in the same order as the tables within the IDataReader.
    dataSet.Load(reader, LoadOption.Upsert, "Customers", "Products");
    foreach (DataTable table in dataSet.Tables)
    {
        PrintColumns(table);
    }

    // Now try the example with the DataSet
    // already filled with data:
    dataSet = new DataSet();
    dataSet.Tables.Add(GetCustomers());
    dataSet.Tables.Add(GetProducts());

    // Retrieve a data reader containing changed data:
    reader = GetReader();

    // Load the data into the existing DataSet. Retrieve the order of the
    // the data in the reader from the
    // list of table names in the parameters. If you specify
    // a new table name here, the Load method will create
    // a corresponding new table.
    dataSet.Load(reader, LoadOption.Upsert,
        "NewCustomers", "Products");
    foreach (DataTable table in dataSet.Tables)
    {
        PrintColumns(table);
    }

    Console.WriteLine("Press any key to continue.");
    Console.ReadKey();
}

private static DataTable GetCustomers()
{
    // Create sample Customers table.
    DataTable table = new DataTable();
    table.TableName = "Customers";

    // Create two columns, ID and Name.
    DataColumn idColumn = table.Columns.Add("ID", typeof(int));
    table.Columns.Add("Name", typeof(string));

    // Set the ID column as the primary key column.
    table.PrimaryKey = new DataColumn[] { idColumn };

    table.Rows.Add(new object[] { 0, "Mary" });
    table.Rows.Add(new object[] { 1, "Andy" });
    table.Rows.Add(new object[] { 2, "Peter" });
    table.AcceptChanges();
    return table;
}

private static DataTable GetProducts()
{
    // Create sample Products table.
    DataTable table = new DataTable();
    table.TableName = "Products";

    // Create two columns, ID and Name.
    DataColumn idColumn = table.Columns.Add("ID", typeof(int));
    table.Columns.Add("Name", typeof(string));

    // Set the ID column as the primary key column.
    table.PrimaryKey = new DataColumn[] { idColumn };

    table.Rows.Add(new object[] { 0, "Wireless Network Card" });
    table.Rows.Add(new object[] { 1, "Hard Drive" });
    table.Rows.Add(new object[] { 2, "Monitor" });
    table.Rows.Add(new object[] { 3, "CPU" });
    table.AcceptChanges();
    return table;
}

private static void PrintColumns(DataTable table)
{
    Console.WriteLine();
    Console.WriteLine(table.TableName);
    Console.WriteLine("=========================");
    // Loop through all the rows in the table:
    foreach (DataRow row in table.Rows)
    {
        for (int i = 0; i < table.Columns.Count; i++)
        {
            Console.Write(row[i] + " ");
        }
        Console.WriteLine();
    }
}

private static DataTableReader GetReader()
{
    // Return a DataTableReader containing multiple
    // result sets, just for the sake of this demo.
    DataSet dataSet = new DataSet();
    dataSet.Tables.Add(GetCustomers());
    dataSet.Tables.Add(GetProducts());
    return dataSet.CreateDataReader();
}
Sub Main()
  Dim dataSet As New DataSet
  Dim table As DataTable

  Dim reader As DataTableReader = GetReader()

  ' The tables listed as parameters for the Load method 
  ' should be in the same order as the tables within the IDataReader.
  dataSet.Load(reader, LoadOption.Upsert, "Customers", "Products")
  For Each table In dataSet.Tables
    PrintColumns(table)
  Next

  ' Now try the example with the DataSet
  ' already filled with data:
  dataSet = New DataSet
  dataSet.Tables.Add(GetCustomers())
  dataSet.Tables.Add(GetProducts())

  ' Retrieve a data reader containing changed data:
  reader = GetReader()

  ' Load the data into the existing DataSet. Retrieve the order of the
  ' the data in the reader from the
  ' list of table names in the parameters. If you specify
  ' a new table name here, the Load method will create
  ' a corresponding new table.
  dataSet.Load(reader, LoadOption.Upsert, "NewCustomers", "Products")
  For Each table In dataSet.Tables
    PrintColumns(table)
  Next

  Console.WriteLine("Press any key to continue.")
  Console.ReadKey()
End Sub

Private Function GetCustomers() As DataTable
  ' Create sample Customers table.
  Dim table As New DataTable
  table.TableName = "Customers"

  ' Create two columns, ID and Name.
  Dim idColumn As DataColumn = table.Columns.Add("ID", GetType(Integer))
  table.Columns.Add("Name", GetType(String))

  ' Set the ID column as the primary key column.
  table.PrimaryKey = New DataColumn() {idColumn}

  table.Rows.Add(New Object() {0, "Mary"})
  table.Rows.Add(New Object() {1, "Andy"})
  table.Rows.Add(New Object() {2, "Peter"})
  table.AcceptChanges()
  Return table
End Function

Private Function GetProducts() As DataTable
  ' Create sample Products table, in order
  ' to demonstrate the behavior of the DataTableReader.
  Dim table As New DataTable
  table.TableName = "Products"

  ' Create two columns, ID and Name.
  Dim idColumn As DataColumn = table.Columns.Add("ID", GetType(Integer))
  table.Columns.Add("Name", GetType(String))

  ' Set the ID column as the primary key column.
  table.PrimaryKey = New DataColumn() {idColumn}

  table.Rows.Add(New Object() {0, "Wireless Network Card"})
  table.Rows.Add(New Object() {1, "Hard Drive"})
  table.Rows.Add(New Object() {2, "Monitor"})
  table.Rows.Add(New Object() {3, "CPU"})
  Return table
End Function

Private Function GetReader() As DataTableReader
  ' Return a DataTableReader containing multiple
  ' result sets, just for the sake of this demo.
  Dim dataSet As New DataSet
  dataSet.Tables.Add(GetCustomers())
  dataSet.Tables.Add(GetProducts())
  Return dataSet.CreateDataReader()
End Function

Private Sub PrintColumns( _
   ByVal table As DataTable)

  Console.WriteLine()
  Console.WriteLine(table.TableName)
  Console.WriteLine("=========================")
  ' Loop through all the rows in the table.
  For Each row As DataRow In table.Rows
    For Each col As DataColumn In table.Columns
      Console.Write(row(col).ToString() & " ")
    Next
    Console.WriteLine()
  Next
End Sub

Açıklamalar

yöntemi, Load bir örnekten alınan verilerle tek DataTable bir öğeyi doldurmak için bir IDataReader teknik sağlar. Bu yöntem aynı işlevselliği sağlar, ancak içinden birden çok tabloya DataSetbirden çok sonuç kümesi IDataReader yüklemenize olanak tanır.

Not

Gelen reader kaynak veri sütunlarından herhangi biri hesaplanan sütunlarsa, yükleme işlemi başarısız InvalidOperationException olur.

parametresi, loadOption içeri aktarılan verilerin mevcut verilerle nasıl etkileşim kurmasını istediğinizi belirtmenize olanak tanır ve numaralandırmadaki LoadOption değerlerden herhangi biri olabilir. Bu parametreyi Load kullanma hakkında daha fazla bilgi için yöntemin belgelerine bakın.

tables parametresi, okuyucudan yüklenen her sonuç kümesine karşılık gelen tabloların sırasını belirten bir tablo adları dizisi belirtmenize olanak tanır. yöntemi, Load tablo adları dizisinde bulunan adla eşleşen bir tabloyu DataSet sırayla bulmaya çalışır. Eşleşen bir tablo bulunursa, bu tablo geçerli sonuç kümesinin içeriğiyle yüklenir. Eşleşen tablo bulunmazsa, tablo adları dizisinde sağlanan ad kullanılarak bir tablo oluşturulur ve yeni tablonun şeması sonuç kümesinden çıkarılır. Her sonuç kümesinden Load sonra yöntem, başka sonuç kümesi kalmayıncaya kadar okuyucunun içindeki bir sonraki sonuç kümesine geçer.

ile ilişkilendirilmiş DataSetvarsayılan ad alanı varsa, yeni oluşturulan DataTableher ile ilişkilendirilir. Bu yöntemin ad çözümleme düzeni, ardından sınıfının yöntemiyle FillDbDataAdapter aynıdır.

Ayrıca bkz.

Şunlara uygulanır

Load(IDataReader, LoadOption, FillErrorEventHandler, DataTable[])

Kaynak:
DataSet.cs
Kaynak:
DataSet.cs
Kaynak:
DataSet.cs

DataSet Şema ve ad alanı bilgilerini sağlamak için bir dizi örneği kullanarak sağlanan IDataReaderkullanarak bir DataTable veri kaynağındaki değerlerle doldurur.

public:
 virtual void Load(System::Data::IDataReader ^ reader, System::Data::LoadOption loadOption, System::Data::FillErrorEventHandler ^ errorHandler, ... cli::array <System::Data::DataTable ^> ^ tables);
public virtual void Load (System.Data.IDataReader reader, System.Data.LoadOption loadOption, System.Data.FillErrorEventHandler? errorHandler, params System.Data.DataTable[] tables);
public virtual void Load (System.Data.IDataReader reader, System.Data.LoadOption loadOption, System.Data.FillErrorEventHandler errorHandler, params System.Data.DataTable[] tables);
abstract member Load : System.Data.IDataReader * System.Data.LoadOption * System.Data.FillErrorEventHandler * System.Data.DataTable[] -> unit
override this.Load : System.Data.IDataReader * System.Data.LoadOption * System.Data.FillErrorEventHandler * System.Data.DataTable[] -> unit
Public Overridable Sub Load (reader As IDataReader, loadOption As LoadOption, errorHandler As FillErrorEventHandler, ParamArray tables As DataTable())

Parametreler

reader
IDataReader

Bir IDataReader veya daha fazla sonuç kümesi sağlayan.

loadOption
LoadOption

içindeki örneklerde DataTableDataSet bulunan satırların aynı birincil anahtarı paylaşan gelen satırlarla nasıl birleştirileceğini gösteren numaralandırmadaki bir değerLoadOption.

errorHandler
FillErrorEventHandler

FillErrorEventHandler Veri yüklenirken bir hata oluştuğunda çağrılacak bir temsilci.

tables
DataTable[]

Yöntemin DataTable ad ve ad alanı bilgilerini aldığı örnek Load(IDataReader, LoadOption, FillErrorEventHandler, DataTable[]) dizisi.

Örnekler

Aşağıdaki örnek, öğesine bir DataSettablo ekler ve ardından uyumsuz bir şema içeren bir DataTableReader kaynaktan veri yüklemek için yöntemini kullanmayı Load dener. Bu örnek, hatayı yakalamak yerine bir temsilci kullanarak FillErrorEventHandler hatayı araştırır ve işler. Çıkış konsol penceresinde görüntülenir.

static void Main()
{
    // Attempt to load data from a data reader in which
    // the schema is incompatible with the current schema.
    // If you use exception handling, you won't get the chance
    // to examine each row, and each individual table,
    // as the Load method progresses.
    // By taking advantage of the FillErrorEventHandler delegate,
    // you can interact with the Load process as an error occurs,
    // attempting to fix the problem, or simply continuing or quitting
    // the Load process.:
    DataSet dataSet = new DataSet();
    DataTable table = GetIntegerTable();
    dataSet.Tables.Add(table);
    DataTableReader reader = new DataTableReader(GetStringTable());
    dataSet.Load(reader, LoadOption.OverwriteChanges,
        FillErrorHandler, table);

    Console.WriteLine("Press any key to continue.");
    Console.ReadKey();
}

private static DataTable GetIntegerTable()
{
    // Create sample Customers table, in order
    // to demonstrate the behavior of the DataTableReader.
    DataTable table = new DataTable();

    // Create two columns, ID and Name.
    DataColumn idColumn = table.Columns.Add("ID", typeof(int));

    // Set the ID column as the primary key column.
    table.PrimaryKey = new DataColumn[] { idColumn };

    table.Rows.Add(new object[] { 4 });
    table.Rows.Add(new object[] { 5 });
    table.AcceptChanges();
    return table;
}

private static DataTable GetStringTable()
{
    // Create sample Customers table, in order
    // to demonstrate the behavior of the DataTableReader.
    DataTable table = new DataTable();

    // Create two columns, ID and Name.
    DataColumn idColumn = table.Columns.Add("ID", typeof(string));

    // Set the ID column as the primary key column.
    table.PrimaryKey = new DataColumn[] { idColumn };

    table.Rows.Add(new object[] { "Mary" });
    table.Rows.Add(new object[] { "Andy" });
    table.Rows.Add(new object[] { "Peter" });
    table.AcceptChanges();
    return table;
}

static void FillErrorHandler(object sender, FillErrorEventArgs e)
{
    // You can use the e.Errors value to determine exactly what
    // went wrong.
    if (e.Errors.GetType() == typeof(System.FormatException))
    {
        Console.WriteLine("Error when attempting to update the value: {0}",
            e.Values[0]);
    }

    // Setting e.Continue to True tells the Load
    // method to continue trying. Setting it to False
    // indicates that an error has occurred, and the
    // Load method raises the exception that got
    // you here.
    e.Continue = true;
}
Sub Main()
  Dim dataSet As New DataSet
  Dim table As New DataTable()

  ' Attempt to load data from a data reader in which
  ' the schema is incompatible with the current schema.
  ' If you use exception handling, you won't get the chance
  ' to examine each row, and each individual table,
  ' as the Load method progresses.
  ' By taking advantage of the FillErrorEventHandler delegate,
  ' you can interact with the Load process as an error occurs,
  ' attempting to fix the problem, or simply continuing or quitting
  ' the Load process.:
  dataSet = New DataSet()
  table = GetIntegerTable()
  dataSet.Tables.Add(table)
  Dim reader As New DataTableReader(GetStringTable())
  dataSet.Load(reader, LoadOption.OverwriteChanges, _
      AddressOf FillErrorHandler, table)

  Console.WriteLine("Press any key to continue.")
  Console.ReadKey()
End Sub

Private Sub FillErrorHandler(ByVal sender As Object, _
  ByVal e As FillErrorEventArgs)
  ' You can use the e.Errors value to determine exactly what
  ' went wrong.
  If e.Errors.GetType Is GetType(System.FormatException) Then
    Console.WriteLine("Error when attempting to update the value: {0}", _
      e.Values(0))
  End If

  ' Setting e.Continue to True tells the Load
  ' method to continue trying. Setting it to False
  ' indicates that an error has occurred, and the 
  ' Load method raises the exception that got 
  ' you here.
  e.Continue = True
End Sub

Private Function GetIntegerTable() As DataTable
  ' Create sample table with a single Int32 column.
  Dim table As New DataTable

  Dim idColumn As DataColumn = table.Columns.Add("ID", _
      GetType(Integer))

  ' Set the ID column as the primary key column.
  table.PrimaryKey = New DataColumn() {idColumn}

  table.Rows.Add(New Object() {4})
  table.Rows.Add(New Object() {5})
  table.TableName = "IntegerTable"
  table.AcceptChanges()
  Return table
End Function

Private Function GetStringTable() As DataTable
  ' Create sample table with a single String column.
  Dim table As New DataTable

  Dim idColumn As DataColumn = table.Columns.Add("ID", _
      GetType(String))

  ' Set the ID column as the primary key column.
  table.PrimaryKey = New DataColumn() {idColumn}

  table.Rows.Add(New Object() {"Mary"})
  table.Rows.Add(New Object() {"Andy"})
  table.Rows.Add(New Object() {"Peter"})
  table.AcceptChanges()
  Return table
End Function

Private Sub PrintColumns( _
   ByVal table As DataTable)

  ' Loop through all the rows in the DataTableReader.
  For Each row As DataRow In table.Rows
    For Each col As DataColumn In table.Columns
      Console.Write(row(col).ToString() & " ")
    Next
    Console.WriteLine()
  Next
End Sub

Açıklamalar

yöntemi, Load bir örnekten alınan verilerle tek DataTable bir öğeyi doldurmak için bir IDataReader teknik sağlar. Bu yöntem aynı işlevselliği sağlar, ancak içinden birden çok tabloya DataSetbirden çok sonuç kümesi IDataReader yüklemenize olanak tanır.

Not

Gelen reader kaynak veri sütunlarından herhangi biri hesaplanan sütunlarsa, yükleme işlemi başarısız InvalidOperationException olur.

parametresi, loadOption içeri aktarılan verilerin mevcut verilerle nasıl etkileşim kurmasını istediğinizi belirtmenize olanak tanır ve numaralandırmadaki LoadOption değerlerden herhangi biri olabilir. Bu parametreyi DataTableLoad kullanma hakkında daha fazla bilgi için yöntemin belgelerine bakın.

errorHandler parametresi, FillErrorEventHandler veri yüklenirken hata oluştuğunda çağrılan bir yordama başvuran bir temsilcidir. FillErrorEventArgs Yordama geçirilen parametre, oluşan hata, geçerli veri satırı ve doldurulan satır hakkındaki bilgileri almanıza DataTable olanak sağlayan özellikler sağlar. Daha basit bir try/catch bloğu yerine bu temsilci mekanizmasını kullanmak, hatayı belirlemenize, durumu işlemenize ve isterseniz işlemeye devam etmenizi sağlar. FillErrorEventArgs parametresi bir Continue özellik sağlar: hatayı işlediğinizi ve işlemeye true devam etmek istediğinizi belirtmek için bu özelliği olarak ayarlayın; işlemeyi durdurmak istediğinizi belirtmek için özelliğini false olarak ayarlayın. özelliğini false olarak ayarlamanın, sorunu tetikleyen kodun özel durum oluşturmasına neden olduğunu unutmayın.

tables parametresi, okuyucudan yüklenen her sonuç kümesine karşılık gelen tabloların sırasını belirten bir örnek dizisi DataTable belirtmenize olanak tanır. yöntemi, Load sağlanan DataTable her örneği kaynak veri okuyucudan alınan tek bir sonuç kümesindeki verilerle doldurur. Her sonuç kümesinden Load sonra yöntem, başka sonuç kümesi kalmayıncaya kadar okuyucunun içindeki bir sonraki sonuç kümesine geçer.

Bu yöntemin ad çözümleme düzeni, ardından sınıfının yöntemiyle FillDbDataAdapter aynıdır.

Ayrıca bkz.

Şunlara uygulanır