Mengambil Baris (Penyedia OLE DB Klien Asli)

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System (PDW)

Antarmuka IRowset adalah antarmuka set baris dasar. Antarmuka IRowset menyediakan metode untuk mengambil baris secara berurutan, mendapatkan data dari baris tersebut, dan mengelola baris. Konsumen menggunakan metode dalam IRowset untuk semua operasi set baris dasar. Ini termasuk mengambil dan merilis baris dan mendapatkan nilai kolom.

Ketika konsumen mendapatkan penunjuk antarmuka pada set baris, langkah pertama biasanya untuk menentukan kemampuan set baris dengan menggunakan metode IRowsetInfo::GetProperties . Ini mengembalikan informasi tentang antarmuka yang diekspos oleh set baris dan juga kemampuan set baris yang tidak muncul sebagai antarmuka yang berbeda, seperti jumlah maksimum baris aktif dan jumlah baris yang dapat memiliki pembaruan tertunda pada saat yang sama.

Langkah selanjutnya untuk konsumen adalah menentukan karakteristik, atau metadata, kolom dalam set baris. Untuk ini, mereka menggunakan metode IColumnsInfo untuk informasi kolom sederhana atau metode IColumnsRowset untuk informasi kolom yang diperluas. Metode GetColumnInfo mengembalikan informasi berikut:

  • Jumlah kolom dalam tataan hasil.

  • Array struktur DBCOLUMNINFO, satu per kolom.

    Urutan struktur adalah urutan di mana kolom muncul di set baris. Setiap struktur DBCOLUMNINFO mencakup metadata kolom, seperti nama kolom, ordinal kolom, panjang maksimum nilai yang mungkin dalam kolom, jenis data kolom, presisi, dan panjang.

  • Pointer ke penyimpanan untuk semua nilai string dalam satu blok alokasi.

Konsumen menentukan kolom mana yang dibutuhkan baik dari metadata atau berdasarkan perintah teks yang menghasilkan set baris. Ini menentukan ordinal kolom yang diperlukan dari urutan informasi kolom yang dikembalikan oleh IColumnsInfo atau dari ordinal dalam kumpulan baris metadata kolom yang dikembalikan oleh IColumnsRowset.

Antarmuka IColumnsInfo dan IColumnsRowset digunakan untuk mengekstrak informasi tentang kolom dalam set baris. Antarmuka IColumnsInfo mengembalikan sekumpulan informasi terbatas, sedangkan IColumnsRowset menyediakan semua metadata.

Catatan

Di SQL Server versi 7.0 dan yang lebih lama, kolom metadata opsional DBCOLUMN_COMPUTEMODE dikembalikan oleh IColumnsInfo::GetColumnsInfo mengembalikan DBSTATUS_S_ISNULL (alih-alih nilai yang menjelaskan apakah kolom dihitung) karena tidak dapat ditentukan apakah kolom yang mendasarinya dihitung.

Ordinal digunakan untuk menentukan pengikatan ke kolom. Pengikatan adalah struktur yang mengaitkan elemen struktur konsumen dengan kolom. Pengikatan dapat mengikat nilai data, panjang, dan nilai status kolom.

Satu set pengikatan dikumpulkan bersama-sama dalam aksesor. Ini dibuat dengan menggunakan metode IAccessor::CreateAccessor . Aksesor dapat berisi beberapa pengikatan sehingga data untuk beberapa kolom dapat diambil atau diatur dalam satu panggilan. Konsumen dapat membuat beberapa aksesor untuk mencocokkan pola penggunaan yang berbeda di berbagai bagian aplikasi. Ini dapat membuat dan merilis aksesor saat set baris tetap ada.

Untuk mengambil baris dari database, konsumen memanggil metode, seperti IRowset::GetNextRows atau IRowsetLocate::GetRowsAt. Operasi pengambilan ini menempatkan data baris dari server ke dalam buffer baris penyedia. Konsumen tidak memiliki akses langsung ke buffer baris penyedia. Konsumen menggunakan IRowset::GetData untuk menyalin data dari buffer penyedia ke buffer konsumen dan IRowsetChange::SetData untuk menyalin perubahan data dari buffer konsumen ke buffer penyedia.

Konsumen memanggil metode GetData dan meneruskan handel ke baris, handel ke pengakses, dan penunjuk ke buffer yang dialokasikan konsumen. GetData mengonversi data dan mengembalikan kolom seperti yang ditentukan dalam pengikatan yang digunakan untuk membuat aksesor. Konsumen dapat memanggil GetData lebih dari satu kali untuk baris, menggunakan aksesor dan buffer yang berbeda dan oleh karena itu konsumen dapat memperoleh beberapa salinan data yang sama.

Data dari kolom panjang variabel dapat diperlakukan beberapa cara. Pertama, kolom tersebut dapat terikat ke bagian terbatas dari struktur konsumen. Ini menyebabkan pemotongan ketika panjang data melebihi panjang buffer. Konsumen dapat menentukan bahwa pemotongan telah terjadi dengan memeriksa status DBSTATUS_S_TRUNCATED. Panjang yang dikembalikan selalu panjang benar dalam byte, sehingga konsumen juga dapat menentukan berapa banyak data yang dipotong.

Ketika konsumen telah selesai mengambil atau memperbarui baris, konsumen merilisnya dengan metode ReleaseRows . Ini merilis sumber daya dari salinan baris di set baris dan menyediakan ruang untuk baris baru. Konsumen kemudian dapat mengulangi siklus pengambilan atau pembuatan baris dan mengakses data di dalamnya.

Ketika konsumen selesai dengan set baris, ia memanggil metode IAccessor::ReleaseAccessor untuk merilis aksesor apa pun. Ini memanggil metode IUnknown::Release pada semua antarmuka yang diekspos oleh set baris untuk merilis set baris. Ketika rowset dirilis, itu memaksa rilis baris atau aksesor yang tersisa yang mungkin ditahan konsumen.

Di Bagian Ini

Lihat Juga

Himpunan baris