OleDbDataAdapter.Fill Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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 |
Fill(DataSet, Object, String) |
Menambahkan atau menyegarkan baris di DataSet agar sesuai dengan baris di ADO |
Fill(DataTable, Object)
- Sumber:
- OleDbDataAdapter.cs
- Sumber:
- OleDbDataAdapter.cs
- Sumber:
- OleDbDataAdapter.cs
- Sumber:
- OleDbDataAdapter.cs
- Sumber:
- 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
Parameter
- 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
- Sumber:
- 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
Parameter
- 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();