Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir: .NET Framework
.NET
.NET Standard
Bir SqlDataAdapter, DataTableMapping özelliğinde sıfır veya daha fazla TableMappings nesneden oluşan bir koleksiyon içerir. DataTableMapping, bir sorgudan döndürülen veriler ile bir veri kaynağı DataTablearasında ana eşleme sağlar. DataTableMapping adı, DataTable adı yerine Fill yöntemine DataAdapter geçirilebilir. Aşağıdaki örnek, Yazarlar tablosu için AuthorsMapping adlı bir DataTableMapping oluşturur.
workAdapter.TableMappings.Add("AuthorsMapping", "Authors");
DataTableMapping, veritabanındakilerden farklı bir DataTable'da sütun adlarını kullanmanıza olanak tanır. DataAdapter, tablo güncelleştirildiğinde sütunları eşleştirmek için eşlemeyi kullanır.
Uyarı
DataAdapter'ınFill veya Update yöntemini çağırırken TableName veya DataTableMapping adı belirtmezseniz, DataAdapter "Table" adlı bir DataTableMapping arar. DataTableMapping yoksa,DataTable'ınTableName'i "Table" olur. "Tablo" adıyla bir DataTableMapping oluşturarak varsayılan DataTableMapping belirtebilirsiniz.
Aşağıdaki kod örneği bir DataTableMapping ( System.Data.Common ad alanından) oluşturur ve bunu "Tablo" olarak adlandırarak belirtilen DataAdapter için varsayılan eşleme yapar. Örnek daha sonra sorgu sonucundaki ilk tablodaki sütunları (Northwind veritabanının Müşteriler tablosu) içindeki Northwind Müşterileri tablosundaki daha kullanıcı dostu adlar kümesiyle DataSeteşler. Eşlenmeyen sütunlar için veri kaynağındaki sütunun adı kullanılır.
// Assumes that connection is a valid SqlConnection object.
DataSet custDataSet = new DataSet();
SqlDataAdapter custAdapter = new SqlDataAdapter(
"SELECT * FROM dbo.Customers", connection);
DataTableMapping mapping =
custAdapter.TableMappings.Add("Table", "NorthwindCustomers");
mapping.ColumnMappings.Add("CompanyName", "Company");
mapping.ColumnMappings.Add("ContactName", "Contact");
mapping.ColumnMappings.Add("PostalCode", "ZIPCode");
custAdapter.Fill(custDataSet);
Daha gelişmiş durumlarda, aynı DataAdapter'ın farklı eşlemelerle farklı tabloların yüklenmesini desteklemesini istediğinize karar vekleyebilirsiniz. Bunu yapmak için ek DataTableMapping nesneleri ekleyin.
Fill yöntemine DataSet ve DataTableMapping adının bir örneği geçirildiğinde, bu ada sahip bir eşleme varsa kullanılır; aksi takdirde, bu ada sahip bir DataTable kullanılır.
Aşağıdaki örneklerde, adı Customers olan bir DataTableMapping ve adı BizTalkSchema olan bir DataTable oluşturulur. Örnek daha sonra SELECT deyimi tarafından döndürülen satırları BizTalkSchemaDataTable ile eşler.
// Assumes that connection is a valid SqlConnection object.
DataSet custDataSet = new DataSet();
SqlDataAdapter custAdapter = new SqlDataAdapter(
"SELECT * FROM dbo.Customers", connection);
// The DataTableMapping is implemented ITableMapping.
ITableMapping mapping =
custAdapter.TableMappings.Add("Table", "BizTalkSchema");
mapping.ColumnMappings.Add("CustomerID", "ClientID");
mapping.ColumnMappings.Add("CompanyName", "ClientName");
mapping.ColumnMappings.Add("ContactName", "Contact");
mapping.ColumnMappings.Add("PostalCode", "ZIP");
custAdapter.Fill(custDataSet);
Uyarı
Sütun eşlemesi için kaynak sütun adı sağlanmazsa, varsayılan adlar otomatik olarak oluşturulur. Sütun eşlemesi için kaynak sütun sağlanmazsa SourceColumn1 ile başlayarak sütun eşlemesine SourceColumnN artımlı varsayılan adı verilir.
Uyarı
Tablo eşlemesi için kaynak tablo adı sağlanmazsa, varsayılan adlar otomatik olarak oluşturulur. Eğer tablo eşlemesi için bir kaynak tablo adı sağlanmazsa, tablo eşlemesi SourceTableN şeklinde artımlı bir varsayılan ad alır, SourceTable1 ile başlayarak.
Uyarı
Sağladığınız ad, ColumnMappingCollection veya DataTableMappingCollection içindeki tablo eşleme adıyla çakışabileceğinden, sütun eşlemesi için SourceColumn N veya tablo eşlemesi için SourceTableN adlandırma kuralından kaçınmanızı öneririz. Sağlanan ad zaten varsa, bir özel durum oluşturulur.
Birden çok sonuç kümesini işleme
SelectCommand'ınız birden çok tablo döndürüyorsa, Fill belirtilen tablo adıyla başlayıp TableName1'den başlayarak TabloAdıN biçiminde devam ederek DataSet'teki tablolar için artımlı değerlerle tablo adlarını otomatik olarak oluşturur. Otomatik olarak oluşturulan tablo adını DataSet'teki tablo için belirtilen adla eşlemek için tablo eşlemelerini kullanabilirsiniz. Örneğin, Müşteriler ve Siparişler adlı iki tablo döndüren bir SelectCommand için, Doldurma için aşağıdaki çağrıyı yapın.
adapter.Fill(customersDataSet, "Customers");
DataSet'te iki tablo oluşturulur: Müşteriler ve Müşteriler1. İkinci tablonun Müşteriler1 yerine Siparişler olarak adlandırılmasını sağlamak için tablo eşlemelerini kullanabilirsiniz. Bunu yapmak için, aşağıdaki örnekte gösterildiği gibi Customers1'in kaynak tablosunu DataSet tablosu Orders ile eşleyin.
// Assumes that connection is a valid SqlConnection object.
string queryString =
"SELECT * FROM dbo.Customers; SELECT * FROM dbo.Orders;";
SqlDataAdapter adapter = new SqlDataAdapter(queryString, connection);
DataSet customersDataSet = new DataSet();
adapter.TableMappings.Add("Customers1", "Orders");
adapter.Fill(customersDataSet, "Customers");
Ayrıca bakınız
- Veri Adaptörleri (DataAdapters) ve Veri Okuyucular (DataReaders)
- ADO.NET'da verileri alma ve değiştirme
- SQL Server için Microsoft ADO.NET