DataSet.Load Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
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 |
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 DataSet
birden ç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 DataSet
iç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çindeDataSet
yapı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 DataSet
adları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 DataSet
birden ç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ş DataSet
varsayılan ad alanı varsa, yeni oluşturulan DataTable
her 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.