Mengambil Baris

Berlaku untuk: SQL Server (semua versi yang didukung) Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

Unduh driver OLE DB

Antarmuka IRowset adalah antarmuka rowset dasar. Antarmuka IRowset menyediakan metode untuk mengambil baris secara berurutan, mendapatkan data dari baris tersebut, dan mengelola baris. Konsumen menggunakan metode di 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 kumpulan 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 yang tertunda secara bersamaan.

Langkah selanjutnya bagi 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.

  • Penunjuk 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 kumpulan baris. Antarmuka IColumnsInfo mengembalikan sekumpulan informasi terbatas, sedangkan IColumnsRowset menyediakan semua metadata.

Catatan

Dalam SQL Server versi 7.0 dan yang lebih lama, kolom metadata opsional DBCOLUMN_COMPUTEMODE yang dikembalikan oleh IColumnsInfo::GetColumnsInfo mengembalikan DBSTATUS_S_ISNULL (bukan 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 . Pengakses dapat berisi beberapa pengikatan sehingga data untuk beberapa kolom dapat diambil atau diatur dalam satu panggilan. Konsumen dapat membuat beberapa pengaktif 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 berturut-turut, menggunakan pengakses 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 pemotokan ketika panjang data melebihi panjang buffer. Konsumen dapat menentukan bahwa pemotokan 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 dipotok.

Ketika konsumen telah selesai mengambil atau memperbarui baris, konsumen merilisnya dengan metode ReleaseRows . Ini merilis sumber daya dari salinan baris dalam set baris dan memberikan 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 pengakses apa pun. Ini memanggil metode IUnknown::Release pada semua antarmuka yang diekspos oleh rowset untuk merilis rowset. Ketika rowset dirilis, itu memaksa rilis baris atau pengakses yang tersisa yang mungkin ditahan konsumen.

Di Bagian Ini

Lihat juga

Kumpulan baris