Wyszukiwanie za pomocą bazy danych OLE DB
W przypadku klientów korzystających z obiektów danych ActiveX (ADO) oraz klientów, którzy nie używają automatyzacji, ADSI zapewnia dostawcę OLE DB, który obsługuje podzestaw interfejsów zapytań OLE DB. Kod klienta, który już używa interfejsów OLE DB do zapytań, może używać tych samych interfejsów do wykonywania zapytań dotyczących usług katalogowych.
W ramach implementacji OLE DB usługa katalogowa jest uwidaczniona jako obiekt źródła danych. Obiekty źródła danych to fabryki obiektów sesji, które obsługują IDBInitialize do nawiązywania połączenia z katalogiem, IDBCreateSession do tworzenia obiektu sesji, IDBProperties do dostarczania danych uwierzytelniających do bazowej przestrzeni nazw i przekazywania polecenia zapytania oraz IPersist do zapisywania danych niezbędnych do tworzenia obiektu źródła danych w bazowej usłudze katalogowej.
Aby wykonać zapytanie usługi Active Directory przy użyciu OLE DB
- Pobierz interfejs IDBInitialize od dostawcy OLE DB. W przypadku usługi Active Directory użyj identyfikatora klasy CLSID_ADsDSOObject.
- Utwórz tablicę DBPROP danych połączenia, określając nazwę użytkownika i hasło.
- Zaproś interfejs IDBInitialize pobrany w kroku 1 do interfejsu IDBProperties.
- Wywołaj metodę IDBProperties::SetProperties przekazującą tablicę DBPROP utworzoną w kroku 2.
- Wywołaj metodę IDBInitialize::Initialize w celu nawiązania połączenia z dostawcą OLE DB; jest to dostawca usługi Active Directory, w tym przypadku.
- Wykonaj zapytanie o interfejs IDBInitialize, aby uzyskać interfejs IDBCreateSession.
- Wywołaj metodę IDBCreateSession::CreateSession żądającą nowego interfejsu typu IDBCreateCommand.
- Wywołaj metodę IDBCreateCommand::CreateCommand, aby utworzyć interfejs ICommandText.
- Wywołaj metodę ICommandText::SetCommandText. Przekaż preferowany dialekt i rzeczywisty tekst polecenia zapytania w tym dialektze. DBGUID_LDAPDialect lub DBGUID_DBSQL mogą być używane jako dialekt.
- Wywołaj ICommand::Execute; zwracany jest interfejs IRowset, który jest interfejsem zestawu wyników.
- Wykonaj zapytanie dotyczące interfejsu IRowset dla interfejsu IColumnsInfo.
- Wywołaj metodę IColumnsInfo::GetColumnInfo, aby pobrać dane kolumny dotyczące zestawu wyników.
- Wypełnij tablicę struktur DBBINDING, opisując dostawcy OLE DB, jak udostępniać typy danych na podstawie kolumn dla kodu aplikacji. Ten krok umożliwia określenie typu zawartego w określonej kolumnie. Również przesunięcia kolumn względem zwróconego wiersza są tutaj ustawiane dla każdej kolumny osobno.
- Wykonaj zapytanie dotyczące interfejsu IRowset dla interfejsu IAccessor.
- Wywołaj metodę IAccessor::CreateAccessor, która zwraca tablicę dojść dostępu. Ta tablica jest następnie używana do uzyskiwania dostępu do wierszy zestawu wyników.
- Wywołaj IRowset::GetNextRows, przekazując dojścia wierszy i liczbę wierszy do pobrania.
- Wywołaj IRowset::GetData, przekazując uchwyt wiersza z zestawu zwróconego w kroku 16. Zwracany jest nieprzetworzony wskaźnik do wiersza.
Aby uzyskać więcej informacji na temat składni filtru wyszukiwania, zobacz Składnia filtru wyszukiwania.
Aby odczytać zwrócone nieprzetworzone dane wierszy, użyj struktury DBBINDING utworzonej w kroku 13, a następnie oblicz przesunięcia kolumn w nieprzetworzonym wskaźniku danych zwróconym w kroku 17. Przeczytaj część stanu kolumny dla wyniku pobierania dla tej kolumny.
Aby uzyskać więcej informacji i przykładowy kod pokazujący, jak przeszukiwać usługę Active Directory przy użyciu dostawcy OLE DB ADSI, zobacz Przykładowy kod dotyczący używania ole DB do wyszukiwania w usłudze Active Directory.