Bagikan melalui


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 yang mendasar dan menyediakan perintah kueri, serta IPersist untuk menyimpan data yang diperlukan guna membuat objek sumber data pada 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 dengan memasukkan array DBPROP yang dibuat di Langkah 2.
  5. Panggil metode IDBInitialize::Initialize untuk membuat koneksi ke penyedia OLE DB; yang merupakan penyedia Direktori Aktif, dalam hal ini.
  6. Kueri antarmuka IDBInitialize untuk antarmuka IDBCreateSession.
  7. Panggil metode IDBCreateSession::CreateSession yang meminta antarmuka baru dengan jenis IDBCreateCommand.
  8. Panggil metode IDBCreateCommand::CreateCommand untuk membuat antarmuka ICommandText.
  9. Panggil metode ICommandText::SetCommandText. Masukkan dialek pilihan dan teks perintah kueri aktual dalam konteks dialek tersebut. Baik DBGUID_LDAPDialect atau DBGUID_DBSQL dapat digunakan sebagai dialek.
  10. Panggil ICommand::Execute; sebuah antarmuka IRowset dikembalikan yang merupakan antarmuka ke set 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, menjelaskan kepada penyedia OLE DB cara mengekspos jenis data untuk setiap kolom ke kode aplikasi. Langkah ini memungkinkan Anda menentukan TYPE mana yang terkandung dalam kolom tertentu. Selain itu, offset dari kolom-kolom, relatif terhadap baris yang dikembalikan, diatur di sini secara kolom demi kolom.
  14. Tanyakan antarmuka IRowset untuk antarmuka IAccessor.
  15. Panggil fungsi IAccessor::CreateAccessor, yang mengembalikan array handle aksesor. Array ini kemudian digunakan untuk mengakses baris kumpulan hasil.
  16. Panggil IRowset::GetNextRows dengan menyertakan handle baris, dan jumlah baris yang ingin diambil.
  17. Panggil IRowset::GetData dengan melewatkan handle baris dari set yang dikembalikan di Langkah 16. Pointer mentah ke baris akan 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, hitung 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 menunjukkan cara mencari Direktori Aktif menggunakan penyedia ADSI OLE DB, lihat Contoh Kode untuk Menggunakan OLE DB untuk mencari Direktori Aktif.