Mencari dengan OLE DB

Untuk klien Automation yang menggunakan ActiveX Data Objects (ADO) dan semua klien non-Automation, ADSI menyediakan penyedia OLE DB yang mendukung subset antarmuka kueri OLE DB. Kode klien yang sudah menggunakan antarmuka OLE DB untuk kueri dapat menggunakan antarmuka yang sama untuk mengkueri layanan direktori.

Di bawah implementasi OLE DB, layanan direktori diekspos sebagai objek Sumber Data. Objek Sumber Data adalah pabrik untuk objek sesi dan mendukung IDBInitialize untuk menyambungkan ke direktori, IDBCreateSession untuk membuat objek sesi, IDBProperties untuk menyediakan data autentikasi ke namespace layanan yang mendasar dan menyediakan perintah kueri dan IPersist untuk menyimpan data yang diperlukan untuk membuat objek sumber data ke layanan direktori yang mendasar.

Untuk melakukan kueri Direktori Aktif menggunakan OLE DB

  1. Ambil antarmuka IDBInitialize dari penyedia OLE DB. Dalam kasus Active Directory, gunakan pengidentifikasi kelas CLSID_ADsDSOObject.
  2. Buat array DBPROP data koneksi yang menentukan nama pengguna dan kata sandi.
  3. Kueri antarmuka IDBInitialize yang diambil di Langkah 1 untuk antarmuka IDBProperties.
  4. Panggil metode IDBProperties::SetProperties yang melewati array DBPROP yang dibuat di Langkah 2.
  5. Panggil metode IDBInitialize::Initialize untuk membuat koneksi ke penyedia OLE DB; yaitu penyedia Direktori Aktif, dalam hal ini.
  6. Kueri antarmuka IDBInitialize untuk antarmuka IDBCreateSession.
  7. Panggil metode IDBCreateSession::CreateSession yang meminta antarmuka baru jenis IDBCreateCommand.
  8. Panggil metode IDBCreateCommand::CreateCommand untuk membuat antarmuka ICommandText.
  9. Panggil metode ICommandText::SetCommandText. Teruskan dialek pilihan dan teks perintah kueri aktual dalam dialek tersebut. Baik DBGUID_LDAPDialect atau DBGUID_DBSQL dapat digunakan sebagai dialek.
  10. Panggil ICommand::Execute; antarmuka IRowset dikembalikan yang merupakan antarmuka ke tataan hasil.
  11. Kueri antarmuka IRowset untuk antarmuka IColumnsInfo.
  12. Panggil metode IColumnsInfo::GetColumnInfo untuk mengambil data kolom tentang kumpulan hasil.
  13. Isi array struktur DBBINDING , yang menjelaskan kepada penyedia OLE DB cara mengekspos jenis data berdasarkan per kolom ke kode aplikasi. Langkah ini memungkinkan Anda menentukan TYPE mana yang terkandung dalam kolom tertentu. Juga offset kolom, relatif terhadap baris yang dikembalikan, diatur di sini berdasarkan kolom demi kolom.
  14. Kueri antarmuka IRowset untuk antarmuka IAccessor.
  15. Panggil metode IAccessor::CreateAccessor, yang mengembalikan array handel aksesor. Array ini kemudian digunakan untuk mengakses baris kumpulan hasil.
  16. Panggil IRowset::GetNextRows yang melewati gagang baris, dan jumlah baris yang akan didapatkan.
  17. Panggil IRowset::GetData yang melewati handel baris, dari set yang dikembalikan di Langkah 16. Pointer mentah ke baris dikembalikan.

Untuk informasi selengkapnya tentang sintaks filter pencarian, lihat Sintaks Filter Pencarian.

Untuk membaca data baris yang tidak diolah yang dikembalikan, gunakan struktur DBBINDING , yang dibuat di Langkah 13, komputasi offset kolom dalam penunjuk data yang tidak diolah yang dikembalikan di Langkah 17. Baca bagian status kolom untuk hasil pengambilan pada kolom tersebut.

Untuk informasi selengkapnya dan contoh kode yang memperlihatkan cara mencari Direktori Aktif menggunakan penyedia ADSI OLE DB, lihat Contoh Kode untuk Menggunakan OLE DB ke Direktori Aktif Pencarian.