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 DataSet veya nesnedeki Recordset satırlarla eşleşecek şekilde içindeki satırları ekler veya Record yeniler.
Aşırı Yüklemeler
| Name | Description |
|---|---|
| Fill(DataTable, Object) |
Belirtilen DataTable ve ADO nesnelerini kullanarak ADO |
| Fill(DataSet, Object, String) |
belirtilen DataSet, ADO nesnesini ve kaynak tablo adını kullanarak bir ADO |
Fill(DataTable, Object)
- Kaynak:
- OleDbDataAdapter.cs
- 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
için başarıyla yenilenen DataTablesatır sayısı. Bu, satır döndürmeyen deyimlerden etkilenen satırları içermez.
Açıklamalar
ActiveX Veri Nesneleri (ADO) ile ADO.NET arasındaki bağlantı, ADO'dan DataSet'a veri kopyalayabilmeniz için tek 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ının Recordset ardından girişi Fill kapatmaz.
Birden çok sonuç döndüren batch SQL deyimlerini işlerken, OLE DB.NET Framework Veri Sağlayıcısı için Fill ve FillSchema uygulaması yalnızca ilk sonuç için şema bilgilerini alır.
İşlem, Fill içinde belirtilen hedef DataTable nesneye 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 verileri oluşturur. Ancak, özelliği olarak MissingSchemaActionayarlanırsaAddWithKey, uygun birincil anahtarlar ve kısıtlamalar da oluşturulur.
yöntemini aynı Fillüzerinde birden çok kez kullanabilirsinizDataTable. 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ünür. Birincil anahtar bilgileri aracılığıyla, özelliğini belirterek FillSchema veya özelliği PrimaryKeyDataTableolarak ayarlanarak MissingSchemaAction ayarlanabilirAddWithKey.
SelectCommand bir OUTER JOIN sonucunu döndürürse, DataAdapter sonucu PrimaryKey için bir DataTable değer ayarlamaz. Yinelenen satırların doğru çözümlenmesi 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ı düzgün çalışması 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 DBCOLUMN_KEYCOLUMN inceleyerek hangi sütunların birincil anahtar sütunları olduğunu belirlemesini gerektirir. Alternatif olarak, kullanıcı her DataTablebirinde birincil anahtar kısıtlamalarını açıkça ayarlayabilir. Bu, var olan kayıtlarla eşleşen gelen kayıtların eklenmek yerine güncelleştirilmesini sağlar.
bir doldurma sırasında OleDbDataAdapteryinelenen sütunlarla karşılaşırsa, "DataTable1", "columnname 2", "columnname3" vb. desenini kullanarak sonraki sütunlar için adlar oluşturur. İ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.
Caution
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 Close veya Recordset nesneleri kullanmayı bitirdiğinizde her zaman çağırınRecord. Bu, bir veri kaynağına yönelik 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 TableMappings.Add yöntemini çağırdığınızda DataAdapter ve kaynak tablo parametresini açıkça boş bir dizeyle eşlediğinizde, veri kümesi kaynak tablo kullanılarak başarıyla doldurulur, ancak veri kümesi hiçbir şeyle doldurulamaz. Örneğin, aşağıdaki örnekte hiçbir rDataSet şeyle doldurulmayacak.
rAdapter.TableMappings.Add("source table", "");
rAdapter.Fill(rDataSet, "source table");
Bu örnek, birden çok sonuçla ilgilenirken sonucu nasıl atlayabileceğinizi gösterir.
Aşağıdaki örnekte ADO OleDbDataAdapterkullanarak doldurmak DataTable için bir kullanılırRecordset. Bu örnekte bir ADO Recordsetoluş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
- 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 yenilenen DataSetsatır sayısı. Bu, satır döndürmeyen deyimlerden etkilenen 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 DataSet'a veri kopyalayabilmeniz için tek yönlü bir işlemdir, ancak verilerdeki tüm güncelleştirmelerin ADO.NET tarafından işlenmesi gerekir.
Fill yöntemi, üzerinde yöntemini NextRecordsetçağırarak Recordset birden çok sonuç arasında yinelenir ve işlemin tamamlanmasının Recordset ardından girişi Fill kapatır.
İşlem, Fill içinde belirtilen hedef DataTable nesneye 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 verileri oluşturur. Ancak, özelliği olarak MissingSchemaActionayarlanırsaAddWithKey, 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ünür. Birincil anahtar bilgileri aracılığıyla, özelliğini belirterek FillSchema veya özelliği PrimaryKeyDataTableolarak ayarlanarak MissingSchemaAction ayarlanabilirAddWithKey.
AddWithKey, OLE DB için .NET Framework Veri Sağlayıcısı düzgün çalışması için 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 DataTablebirinde birincil anahtar kısıtlamalarını açıkça ayarlayabilir. Bu, var olan 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 PrimaryKey için bir DataTable değer ayarlamaz. Yinelenen satırların doğru çözümlenmesi 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, satır döndürmeyen sorgular kapalı Recordsetbir ile gösterildiğinden, birden çok sonucu işlemek için gereklidir. yalnızca OleDbDataAdapter kapatılan NextRecordset öğesini çağırır Recordset ve işlemeye devam eder.
Veri kümesi açılırken bir hatayla karşılaşılırsa, hata oluşmadan önce eklenen satırlar içinde DataSetkalır. İşlemin geri kalanı durduruldu.
Nesnesi bir DbDataAdapteröğesini dolduruyorken yinelenen sütunlarla karşılaşırsa, "DataTable1", "columnname 2", "columnname3" desenini kullanarak sonraki sütunlar için adlar oluşturur. 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.
Note
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 DataSet nesnesi olan bir Recordset ADO Record 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();