Tworzenie konsumenta bez użycia kreatora
W poniższym przykładzie założono, że dodajesz obsługę konsumenta OLE DB z istniejącym projektem ATL.Jeśli chcesz dodać do aplikacji MFC obsługę konsumenta OLE DB, należy uruchomić Kreatora aplikacji MFC, która tworzy niezbędne wsparcie i wywołuje MFC procedury niezbędne do wykonywania aplikacji.
Aby dodać obsługę konsumenta OLE DB bez Kreatora ATL OLE DB konsumenta:
W pliku Stdafx.h, dołącz następujące #include instrukcji:
#include <atlbase.h> #include <atldbcli.h> #include <atldbsch.h> // if you are using schema templates
Programowo konsument zazwyczaj wykonuje następującą sekwencję operacji:
Utwórz klasę rekordu użytkownika, który wiąże kolumn do zmiennych lokalnych.W tym przykładzie CMyTableNameAccessor jest klasa rekordu użytkownika (zobacz Rekordów użytkowników).Ta klasa zawiera kolumny mapy i mapy parametru.Zadeklarować elementu danych w polu Klasa użytkownika rekordu dla każdego pola określonego w kolumnie mapę; dla każdego z tych elementów członkowskich danych należy również zadeklarować element członkowski danych stanu i długość element członkowski danych.Aby uzyskać więcej informacji, zobacz Pole Stan danych członków w akcesorach Wizard-Generated.
[!UWAGA]
Jeśli piszesz własną konsumenta, zmienne dane muszą znajdować się przed zmienne stanu i długości.
Utwórz wystąpienie źródła danych i sesji.Decydować o rodzaju akcesor i zestaw wierszy do używania i utworzyć wystąpienia zestawu wierszy za pomocą CCommand lub CTable:
CDataSource ds; CSession ss; class CMyTableName : public CCommand<CAccessor<CMyTableNameAccessor> >
Wywołanie CoInitialize zainicjować modelu COM.Zazwyczaj jest to w kodzie głównym.Na przykład:
HRESULT hr = CoInitialize(NULL);
Wywołanie CDataSource::Open lub jeden z jego odmiany.
Otworzyć połączenia ze źródłem danych, otwórz sesję i otworzyć i inicjowania zestawu wierszy (i jeśli polecenie, również wykonywanie go):
hr = ds.Open(); hr = ss.Open(ds); hr = rs.Open(); // (Open also executes the command)
Opcjonalnie zestaw wierszy zestawu właściwości za pomocą CDBPropSet::AddProperty i przekazać je jako parametr rs.Open.Aby uzyskać przykład tego, jak to zrobić, zobacz GetRowsetProperties w Metody Consumer Wizard-Generated.
Teraz służy zestaw wierszy pobierania/operacje na danych.
Po zakończeniu aplikacji, zamknij połączenie, sesji i zestaw wierszy:
rs.Close(); ss.Close(); ds.Close();
Jeśli używasz polecenia można wywołać ReleaseCommand po Zamknij.Przykład kodu w CCommand::Close pokazuje sposób wywoływania Zamknij i ReleaseCommand.
Wywołanie CoUnInitialize do odinicjowania COM.Zazwyczaj jest to w kodzie głównym.
CoUninitialize();