Bagikan melalui


OleDbDataAdapter.Fill Metode

Definisi

Menambahkan atau menyegarkan baris di DataSet agar sesuai dengan baris di ADO Recordset atau Record objek.

Overload

Fill(DataTable, Object)

Menambahkan atau merefresh baris dalam untuk DataTable mencocokkan baris di ADO Recordset atau Record objek menggunakan objek yang ditentukan DataTable dan ADO.

Fill(DataSet, Object, String)

Menambahkan atau menyegarkan baris di DataSet agar sesuai dengan baris di ADO Recordset atau Record objek menggunakan objek , ADO, dan nama tabel sumber yang ditentukan DataSet.

Fill(DataTable, Object)

Sumber:
OleDbDataAdapter.cs
Sumber:
OleDbDataAdapter.cs
Sumber:
OleDbDataAdapter.cs
Sumber:
OleDbDataAdapter.cs

Menambahkan atau merefresh baris dalam untuk DataTable mencocokkan baris di ADO Recordset atau Record objek menggunakan objek yang ditentukan DataTable dan ADO.

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

Parameter

dataTable
DataTable

DataTable untuk diisi dengan rekaman dan, jika diperlukan, skema.

ADODBRecordSet
Object

ADO Recordset atau Record objek.

Mengembalikan

Jumlah baris berhasil disegarkan ke DataTable. Ini tidak termasuk baris yang dipengaruhi oleh pernyataan yang tidak mengembalikan baris.

Keterangan

Tautan antara ActiveX Data Objects (ADO) dan ADO.NET adalah operasi satu arah di mana Anda dapat menyalin data dari ADO ke DataSet, tetapi pembaruan apa pun pada data harus ditangani oleh ADO.NET.

Kelebihan metode Fill ini tidak menutup input Recordset pada penyelesaian Fill operasi.

Saat menangani pernyataan SQL batch yang mengembalikan beberapa hasil, implementasi Fill dan FillSchema untuk Penyedia Data OLE DB.NET Framework mengambil informasi skema hanya untuk hasil pertama.

Operasi Fill menambahkan baris ke objek tujuan DataTable yang ditentukan di DataSet, membuat DataTable objek jika belum ada. Saat Anda membuat DataTable objek, Fill operasi biasanya hanya membuat metadata nama kolom. Namun, jika MissingSchemaAction properti diatur ke AddWithKey, kunci dan batasan primer yang sesuai juga dibuat.

Anda dapat menggunakan Fill metode beberapa kali pada yang sama DataTable. Jika kunci primer ada, baris masuk digabungkan dengan baris yang cocok yang sudah ada. Jika tidak ada kunci primer, baris masuk ditambahkan ke DataTable. Jika informasi kunci primer ada, setiap baris duplikat direkonsiliasi dan hanya muncul satu kali dalam DataTable yang sesuai dengan DataSet. Informasi kunci primer dapat diatur baik melalui FillSchema, dengan menentukan PrimaryKey properti dari DataTable, atau dengan mengatur MissingSchemaAction properti ke AddWithKey.

Jika SelectCommand mengembalikan hasil GABUNGAN LUAR, maka DataAdapter tidak akan mengatur nilai PrimaryKey untuk menghasilkan DataTable. Anda harus secara eksplisit menentukan kunci primer untuk memastikan bahwa baris duplikat diselesaikan dengan benar. Untuk informasi selengkapnya, lihat Menentukan Kunci Utama.

Untuk berfungsi dengan benar dengan Penyedia Data .NET Framework untuk OLE DB, AddWithKey mengharuskan penyedia OLE DB asli mendapatkan informasi kunci primer yang diperlukan dengan mengatur properti DBPROP_UNIQUEROWS, lalu menentukan kolom mana yang merupakan kolom kunci primer dengan memeriksa DBCOLUMN_KEYCOLUMN di IColumnsRowset. Atau pengguna dapat secara eksplisit mengatur batasan kunci primer pada setiap DataTable. Ini memastikan bahwa rekaman masuk yang cocok dengan rekaman yang ada diperbarui alih-alih ditambahkan.

OleDbDataAdapter Jika menemukan kolom duplikat saat mengisi DataTable, kolom akan menghasilkan nama untuk kolom berikutnya, menggunakan pola "columnname1", "columnname2", "columnname3", dan sebagainya. Nama kolom kosong ditambahkan ke DataTable, menggunakan string kosong untuk kolom pertama, diikuti oleh "1", "2", "3", dan sebagainya untuk kolom kosong berikutnya.

Nilai dalam ADO Recordset atau Record objek dikonversi ke jenis runtime bahasa umum untuk penyimpanan di DataSet.

Perhatian

Kelebihan beban Fill metode ini tidak secara implisit memanggil Close objek ADO ketika operasi pengisian selesai. Oleh karena itu, selalu panggil Close ketika Anda selesai menggunakan ADO Recordset atau Record objek. Ini memastikan bahwa koneksi yang mendasar ke sumber data dirilis tepat waktu, dan juga mencegah kemungkinan pelanggaran akses karena objek ADO yang tidak dikelola direklamasi oleh pengumpulan sampah ketika referensi yang ada masih ada.

Saat Anda memanggil TableMappings.Add metode pada DataAdapter dan Anda secara eksplisit memetakan parameter tabel sumber ke string kosong, himpunan data berhasil diisi menggunakan tabel sumber, tetapi himpunan data akan diisi tanpa apa pun. Misalnya, dalam contoh berikut, rDataSet akan diisi tanpa apa pun.

rAdapter.TableMappings.Add("source table", "");  
rAdapter.Fill(rDataSet, "source table");     

Contoh ini menunjukkan bagaimana Anda dapat melewati hasil saat berhadapan dengan beberapa hasil.

Contoh berikut menggunakan OleDbDataAdapter untuk mengisi DataTable menggunakan ADO Recordset. Contoh ini mengasumsikan bahwa Anda telah membuat ADO Recordset.

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();  

Lihat juga

Berlaku untuk

Fill(DataSet, Object, String)

Sumber:
OleDbDataAdapter.cs
Sumber:
OleDbDataAdapter.cs
Sumber:
OleDbDataAdapter.cs
Sumber:
OleDbDataAdapter.cs

Menambahkan atau menyegarkan baris di DataSet agar sesuai dengan baris di ADO Recordset atau Record objek menggunakan objek , ADO, dan nama tabel sumber yang ditentukan DataSet.

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

Parameter

dataSet
DataSet

DataSet untuk diisi dengan rekaman dan, jika diperlukan, skema.

ADODBRecordSet
Object

ADO Recordset atau Record objek.

srcTable
String

Tabel sumber yang digunakan untuk pemetaan tabel.

Mengembalikan

Jumlah baris yang berhasil ditambahkan atau disegarkan di DataSet. Ini tidak termasuk baris yang dipengaruhi oleh pernyataan yang tidak mengembalikan baris.

Pengecualian

Tabel sumber tidak valid.

Keterangan

Tautan antara ActiveX Data Objects (ADO) dan ADO.NET adalah operasi satu arah di mana Anda dapat menyalin data dari ADO ke DataSet, tetapi pembaruan apa pun pada data harus ditangani oleh ADO.NET.

Metode ini Fill melakukan iterasi melalui beberapa hasil dengan memanggil NextRecordset metode pada Recordset, menutup input Recordset pada penyelesaian Fill operasi.

Operasi Fill menambahkan baris ke objek tujuan DataTable yang ditentukan di DataSet, membuat DataTable objek jika belum ada. Saat Anda membuat DataTable objek, Fill operasi biasanya hanya membuat metadata nama kolom. Namun, jika MissingSchemaAction properti diatur ke AddWithKey, kunci dan batasan primer yang sesuai juga dibuat.

Jika informasi kunci primer ada, setiap baris duplikat direkonsiliasi dan hanya muncul satu kali dalam DataTable yang sesuai dengan DataSet. Informasi kunci primer dapat diatur baik melalui FillSchema, dengan menentukan PrimaryKey properti dari DataTable, atau dengan mengatur MissingSchemaAction properti ke AddWithKey.

Untuk berfungsi dengan benar dengan Penyedia Data .NET Framework untuk OLE DB, AddWithKey mengharuskan penyedia OLE DB asli untuk mendapatkan informasi kunci primer yang diperlukan dengan mengatur properti DBPROP_UNIQUEROWS, lalu menentukan kolom mana yang merupakan kolom kunci utama dengan memeriksa DBCOLUMN_KEYCOLUMN di IColumnsRowset. Atau pengguna dapat secara eksplisit mengatur batasan kunci primer pada setiap DataTable. Ini memastikan bahwa rekaman masuk yang cocok dengan rekaman yang ada diperbarui alih-alih ditambahkan.

Jika SelectCommand mengembalikan hasil GABUNGAN LUAR, maka DataAdapter tidak akan mengatur nilai PrimaryKey untuk menghasilkan DataTable. Anda harus secara eksplisit menentukan kunci primer untuk memastikan bahwa baris duplikat diselesaikan dengan benar. Untuk informasi selengkapnya, lihat Menentukan Kunci Utama.

Recordset Jika ditutup sebelum memulai Fill operasi, tidak ada hasil kesalahan. Ini diperlukan untuk menangani beberapa hasil, karena kueri yang tidak mengembalikan baris ditunjukkan oleh tertutup Recordset. OleDbDataAdapter panggilan saja NextRecordset pada tertutup Recordset dan terus diproses.

Jika terjadi kesalahan saat mengisi himpunan data, baris yang ditambahkan sebelum terjadinya kesalahan tetap berada DataSetdi . Sisa operasi dibatalkan.

DbDataAdapter Jika objek menemukan kolom duplikat saat mengisi DataTable, objek menghasilkan nama untuk kolom berikutnya, menggunakan pola "columnname1", "columnname2", "columnname3", dan sebagainya. Jika data masuk berisi kolom yang tidak disebutkan namanya, data tersebut ditempatkan sesuai DataSet dengan pola "Column1", "Column2", dan sebagainya. Saat beberapa tataan hasil ditambahkan ke setiap tataan DataSet hasil ditempatkan dalam tabel terpisah. Kumpulan hasil tambahan dinamai dengan menambahkan nilai integral ke nama tabel yang ditentukan (misalnya, "Table", "Table1", "Table2", dan sebagainya.). Aplikasi yang menggunakan nama kolom dan tabel harus memastikan bahwa konflik dengan pola penamaan ini tidak terjadi.

Nilai dalam ADO Recordset atau Record objek dikonversi ke jenis runtime bahasa umum untuk penyimpanan di DataSet.

Catatan

Kelebihan beban Fill metode ini secara implisit Close memanggil pada objek ADO ketika operasi pengisian selesai.

Contoh berikut menggunakan OleDbDataAdapter untuk mengisi DataSet menggunakan ADO Recordset yang merupakan objek ADO Record . Contoh ini mengasumsikan bahwa Anda telah membuat ADO RecordSet dan Record objek.

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();  

Lihat juga

Berlaku untuk