OleDbDataAdapter.Fill 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.
ADO Recordset
veya nesnedekilerle DataSet eşleşecek şekilde içindeki satırları ekler veya Record
yeniler.
Aşırı Yüklemeler
Fill(DataTable, Object) |
Belirtilen DataTable ve ADO nesnelerini kullanarak ADO |
Fill(DataSet, Object, String) |
belirtilen DataSet, ADO nesnesi ve kaynak tablo adını kullanarak ADO |
Fill(DataTable, Object)
- Kaynak:
- OleDbDataAdapter.cs
- Kaynak:
- OleDbDataAdapter.cs
- Kaynak:
- OleDbDataAdapter.cs
public:
int Fill(System::Data::DataTable ^ dataTable, System::Object ^ ADODBRecordSet);
public int Fill (System.Data.DataTable dataTable, object ADODBRecordSet);
override this.Fill : System.Data.DataTable * obj -> int
Public Function Fill (dataTable As DataTable, ADODBRecordSet As Object) As Integer
Parametreler
- ADODBRecordSet
- Object
ADO Recordset
veya Record
nesne.
Döndürülenler
başarıyla yenilenen DataTablesatır sayısı. Bu, satır döndürmeyen deyimlerin etkilediği satırları içermez.
Açıklamalar
ActiveX Veri Nesneleri (ADO) ile ADO.NET arasındaki bağlantı, ADO'dan öğesine veri kopyalayabilmeniz için DataSettek yönlü bir işlemdir, ancak verilerdeki tüm güncelleştirmelerin ADO.NET tarafından işlenmesi gerekir.
Yönteminin Fill bu aşırı yüklemesi, işlemin tamamlanmasından Fill sonra girişi Recordset
kapatmaz.
Birden çok sonuç döndüren toplu SQL deyimlerini işlerken, OLE DB.NET Framework Veri Sağlayıcısı için bu FillSchema uygulaması Fill yalnızca ilk sonuç için şema bilgilerini alır.
İşlem, Fill içinde belirtilen hedef DataTable nesnesine DataSetsatırları ekler ve henüz yoksa nesnesini oluşturur DataTable . Bir DataTable nesne oluşturduğunuzda, Fill işlem normalde yalnızca sütun adı meta verilerini oluşturur. Ancak, özelliği olarak AddWithKey
ayarlanırsaMissingSchemaAction, uygun birincil anahtarlar ve kısıtlamalar da oluşturulur.
yöntemini aynı DataTableüzerinde birden çok kez kullanabilirsinizFill. Birincil anahtar varsa, gelen satırlar zaten var olan eşleşen satırlarla birleştirilir. Birincil anahtar yoksa, gelen satırlar öğesine DataTableeklenir. Birincil anahtar bilgileri varsa, yinelenen satırlar uzlaştırılır ve içinde DataTable öğesine karşılık gelen DataSetyalnızca bir kez görüntülenir. Birincil anahtar bilgileri aracılığıyla, özelliğini belirterek PrimaryKey veya özelliği DataTableolarak AddWithKey
ayarlanarak MissingSchemaAction ayarlanabilirFillSchema.
SelectCommand bir OUTER JOIN sonucunu döndürürse, DataAdapter
sonucu DataTableiçin bir PrimaryKey değer ayarlamaz. Yinelenen satırların doğru çözümlenmiş olduğundan emin olmak için birincil anahtarı açıkça tanımlamanız gerekir. Daha fazla bilgi için bkz. Birincil Anahtarları Tanımlama.
OLE DB için .NET Framework Veri Sağlayıcısı ile doğru şekilde çalışabilmek için, AddWithKey
yerel OLE DB sağlayıcısının DBPROP_UNIQUEROWS özelliğini ayarlayarak gerekli birincil anahtar bilgilerini almasını ve ardından içindeki DBCOLUMN_KEYCOLUMN inceleyerek hangi sütunların birincil anahtar sütunları olduğunu belirlemesini IColumnsRowset
gerektirir. Alternatif olarak, kullanıcı her DataTableüzerinde birincil anahtar kısıtlamalarını açıkça ayarlayabilir. Bu, mevcut kayıtlarla eşleşen gelen kayıtların eklenmek yerine güncelleştirilmesini sağlar.
bir doldurma DataTablesırasında yinelenen sütunlarla karşılaşırsa, "columnname1", "columnname2", "columnname3" vb. desenini kullanarak izleyen sütunlar için adlar oluşturur.OleDbDataAdapter İlk sütun için boş bir dize kullanılarak öğesine boş sütun adları eklenir DataTableve ardından sonraki boş sütunlar için "1", "2", "3" vb. eklenir.
ADO Recordset
veya Record
nesnelerdeki değerler, içindeki depolama için ortak dil çalışma zamanı türlerine DataSetdönüştürülür.
Dikkat
Yöntemin Fill bu aşırı yüklemesi, doldurma işlemi tamamlandığında ADO nesnesi üzerinde örtük olarak çağrı Close
yapmaz. Bu nedenle, ADO Recordset
veya Record
nesneleri kullanmayı bitirdiğinizde her zaman çağırınClose
. Bu, bir veri kaynağıyla temel alınan bağlantının zamanında yayınlanmasını sağlar ve ayrıca mevcut başvurular hala mevcut olduğunda yönetilmeyen ADO nesnelerinin çöp toplama tarafından geri alınması nedeniyle olası erişim ihlallerini önler.
üzerinde yöntemini DataAdapter
çağırdığınızda TableMappings.Add
ve kaynak tablo parametresini boş bir dizeyle açıkça eşlediğinizde, veri kümesi kaynak tablo kullanılarak başarıyla doldurulur, ancak veri kümesi hiçbir şey ile doldurulmayacak. Örneğin, aşağıdaki örnekte rDataSet
hiçbir şey ile doldurulmayacak.
rAdapter.TableMappings.Add("source table", "");
rAdapter.Fill(rDataSet, "source table");
Bu örnekte, birden çok sonuçla çalışırken sonucu nasıl atlayabileceğiniz gösterilmektedir.
Aşağıdaki örnekte ADO Recordset
kullanarak doldurmak DataTable için bir kullanılırOleDbDataAdapter. Bu örnekte bir ADO Recordset
oluşturduğunuz varsayılır.
Dim custDA As OleDbDataAdapter = New OleDbDataAdapter()
Dim custDS As DataSet = New DataSet
Dim custTable As DataTable = New DataTable("Customers")
custTable.Columns.Add("CustomerID", Type.GetType("System.String"))
custTable.Columns.Add("CompanyName", Type.GetType("System.String"))
custDS.Tables.Add(custTable)
'Use ADO objects from ADO library (msado15.dll) imported
' as.NET library ADODB.dll using TlbImp.exe
Dim adoConn As ADODB.Connection = New ADODB.Connection()
Dim adoRS As ADODB.Recordset = New ADODB.Recordset()
adoConn.Open("Provider=SQLOLEDB;Data Source=localhost;Initial Catalog=Northwind;Integrated Security=SSPI;", "", "", -1)
adoRS.Open("SELECT CustomerID, CompanyName FROM Customers", adoConn, ADODB.CursorTypeEnum.adOpenForwardOnly, ADODB.LockTypeEnum.adLockReadOnly, 1)
custDA.Fill(custTable, adoRS)
adoRS.Close()
adoConn.Close()
OleDbDataAdapter custDA = new OleDbDataAdapter();
DataSet custDS = new DataSet();
DataTable custTable = new DataTable("Customers");
custTable.Columns.Add("CustomerID", typeof(String));
custTable.Columns.Add("CompanyName", typeof(String));
custDS.Tables.Add(custTable);
//Use ADO objects from ADO library (msado15.dll) imported
// as.NET library ADODB.dll using TlbImp.exe
ADODB.Connection adoConn = new ADODB.Connection();
ADODB.Recordset adoRS = new ADODB.Recordset();
adoConn.Open("Provider=SQLOLEDB;Data Source=localhost;Initial Catalog=Northwind;Integrated Security=SSPI;", "", "", -1);
adoRS.Open("SELECT CustomerID, CompanyName FROM Customers", adoConn, ADODB.CursorTypeEnum.adOpenForwardOnly, ADODB.LockTypeEnum.adLockReadOnly, 1);
custDA.Fill(custTable, adoRS);
adoRS.Close();
adoConn.Close();
Ayrıca bkz.
Şunlara uygulanır
Fill(DataSet, Object, String)
- Kaynak:
- OleDbDataAdapter.cs
- Kaynak:
- OleDbDataAdapter.cs
- Kaynak:
- OleDbDataAdapter.cs
public:
int Fill(System::Data::DataSet ^ dataSet, System::Object ^ ADODBRecordSet, System::String ^ srcTable);
public int Fill (System.Data.DataSet dataSet, object ADODBRecordSet, string srcTable);
override this.Fill : System.Data.DataSet * obj * string -> int
Public Function Fill (dataSet As DataSet, ADODBRecordSet As Object, srcTable As String) As Integer
Parametreler
- ADODBRecordSet
- Object
ADO Recordset
veya Record
nesne.
- srcTable
- String
Tablo eşlemeleri için kullanılan kaynak tablo.
Döndürülenler
içine başarıyla eklenen veya içinde DataSetyenilenen satır sayısı. Bu, satır döndürmeyen deyimlerin etkilediği satırları içermez.
Özel durumlar
Kaynak tablo geçersiz.
Açıklamalar
ActiveX Veri Nesneleri (ADO) ile ADO.NET arasındaki bağlantı, ADO'dan öğesine veri kopyalayabilmeniz için DataSettek yönlü bir işlemdir, ancak verilerdeki tüm güncelleştirmelerin ADO.NET tarafından işlenmesi gerekir.
yöntemiFill, üzerinde yöntemini Recordset
çağırarak NextRecordset
birden çok sonuç arasında yinelenir ve işlemin tamamlanmasının Fill ardından girişi Recordset
kapatır.
İşlem, Fill içinde belirtilen hedef DataTable nesnesine DataSetsatırları ekler ve henüz yoksa nesnesini oluşturur DataTable . Bir DataTable nesne oluşturduğunuzda, Fill işlem normalde yalnızca sütun adı meta verilerini oluşturur. Ancak, özelliği olarak AddWithKey
ayarlanırsaMissingSchemaAction, uygun birincil anahtarlar ve kısıtlamalar da oluşturulur.
Birincil anahtar bilgileri varsa, yinelenen satırlar uzlaştırılır ve içinde DataTable öğesine karşılık gelen DataSetyalnızca bir kez görüntülenir. Birincil anahtar bilgileri aracılığıyla, özelliğini belirterek PrimaryKey veya özelliği DataTableolarak AddWithKey
ayarlanarak MissingSchemaAction ayarlanabilirFillSchema.
OLE DB için .NET Framework Veri Sağlayıcısı ile doğru şekilde çalışabilmek için, AddWithKey
yerel OLE DB sağlayıcısının DBPROP_UNIQUEROWS özelliğini ayarlayarak gerekli birincil anahtar bilgilerini almasını ve ardından IColumnsRowset içindeki DBCOLUMN_KEYCOLUMN inceleyerek hangi sütunların birincil anahtar sütunları olduğunu belirlemesini gerektirir. Alternatif olarak, kullanıcı her DataTableüzerinde birincil anahtar kısıtlamalarını açıkça ayarlayabilir. Bu, mevcut kayıtlarla eşleşen gelen kayıtların eklenmesi yerine güncelleştirilmesini sağlar.
SelectCommand bir OUTER JOIN sonucunu döndürürse, DataAdapter
sonucu DataTableiçin bir PrimaryKey değer ayarlamaz. Yinelenen satırların doğru çözümlenmiş olduğundan emin olmak için birincil anahtarı açıkça tanımlamanız gerekir. Daha fazla bilgi için bkz. Birincil Anahtarları Tanımlama.
Recordset
işlemi başlamadan Fill önce kapatılırsa hata sonucu olmaz. Bu, birden çok sonucu işlemek için gereklidir, çünkü satır döndürmeyen sorgular kapalı Recordset
bir ile gösterilir. yalnızca OleDbDataAdapter kapalı Recordset
öğesini çağırır NextRecordset
ve işlemeye devam eder.
Veri kümesi doldurulırken bir hatayla karşılaşılırsa, hatanın oluşmasından önce eklenen satırlar içinde DataSetkalır. İşlemin geri kalanı durduruldu.
Nesnesi bir DataTabledoldurma sırasında yinelenen sütunlarla karşılaşırsa, "columnname1", "columnname2", "columnname3" vb. desenini kullanarak izleyen sütunlar için adlar oluşturur.DbDataAdapter Gelen veriler adsız sütunlar içeriyorsa, "Sütun1", "Sütun2" vb. desenine göre yerleştirilir DataSet . Her sonuç kümesine DataSet birden çok sonuç kümesi eklendiğinde ayrı bir tabloya yerleştirilir. Ek sonuç kümeleri belirtilen tablo adına integral değerleri eklenerek adlandırılır (örneğin, "Tablo", "Tablo1", "Tablo2" vb.). Sütun ve tablo adlarını kullanan uygulamalar, bu adlandırma desenleriyle çakışmaların oluşmadığından emin olmalıdır.
ADO Recordset
veya Record
nesnelerdeki değerler, içindeki depolama için ortak dil çalışma zamanı türlerine DataSetdönüştürülür.
Not
Yöntemin Fill bu aşırı yüklemesi, doldurma işlemi tamamlandığında ADO nesnesi üzerinde örtük olarak çağrılar Close
.
Aşağıdaki örnek, OleDbDataAdapter ADO Record
nesnesi olan bir DataSet ADO Recordset
kullanarak doldurmak için bir kullanır. Bu örnekte bir ADO RecordSet
ve Record
nesnesi oluşturduğunuz varsayılır.
Dim custDA As OleDbDataAdapter = New OleDbDataAdapter()
Dim custDS As DataSet = New DataSet
'Use ADO objects from ADO library (msado15.dll) imported
' as.NET library ADODB.dll using TlbImp.exe
Dim adoConn As ADODB.Connection = New ADODB.Connection()
Dim adoRS As ADODB.Recordset = New ADODB.Recordset()
adoConn.Open("Provider=SQLOLEDB;Data Source=localhost;Initial Catalog=Northwind;Integrated Security=SSPI;", "", "", -1)
adoRS.Open("SELECT * FROM Customers", adoConn, ADODB.CursorTypeEnum.adOpenForwardOnly, ADODB.LockTypeEnum.adLockReadOnly, 1)
custDA.Fill(custDS, adoRS, "Customers")
adoConn.Close()
OleDbDataAdapter custDA = new OleDbDataAdapter();
DataSet custDS = new DataSet();
//Use ADO objects from ADO library (msado15.dll) imported
// as.NET library ADODB.dll using TlbImp.exe
ADODB.Connection adoConn = new ADODB.Connection();
ADODB.Recordset adoRS = new ADODB.Recordset();
adoConn.Open("Provider=SQLOLEDB;Data Source=localhost;Initial Catalog=Northwind;Integrated Security=SSPI;", "", "", -1);
adoRS.Open("SELECT * FROM Customers", adoConn, ADODB.CursorTypeEnum.adOpenForwardOnly, ADODB.LockTypeEnum.adLockReadOnly, 1);
custDA.Fill(custDS, adoRS, "Customers");
adoConn.Close();