Speichern von Zeichenfolgen im OLE DB-Anbieter

In der Datei MyProviderRS.h, den Assistenten für ATL-Objekte erzeugt einen Standard-Benutzer-Datensatz namens CWindowsFile . Zum Behandeln der zwei Zeichenfolgen, entweder bearbeiten CWindowsFile oder fügen Sie Ihre eigene Benutzer-Datensatz, wie hier gezeigt:

////////////////////////////////////////////////////////////////////////
Klasse CAgentMan: öffentliche WIN32_FIND_DATA
   DWORD DwBookmark; Nbsp;             / / Fügen Sie diese
   TCHAR SzCommand [256];          / / Fügen Sie diese
   TCHAR SzText [256];             / / Fügen Sie diese
   TCHAR szCommand2 [256];         / / Fügen Sie diese
   TCHAR szText2 [256];            / / Fügen Sie diese
{
Öffentliche:
BEGIN_PROVIDER_COLUMN_MAP(CAgentMan)
   Durch PROVIDER_COLUMN_ENTRY ("FileAttributes", 1, DwFileAttributes)
   Durch PROVIDER_COLUMN_ENTRY ("FileSizeHigh", 2, nFileSizeHigh)
   Durch PROVIDER_COLUMN_ENTRY ("FileSizeLow", 3, nFileSizeLow)
   Durch PROVIDER_COLUMN_ENTRY ("Dateiname", 4, cFileName)
   Durch PROVIDER_COLUMN_ENTRY ("AltFileName", 5, cAlternateFileName)
END_PROVIDER_COLUMN_MAP()
   Bool Operator == (const CAgentMan & am) / / Dies ist optional {}
      zurück (Lstrcmpi cFileName (wf.cFileName) == 0);
   }
}

Die Datenmember szCommand und szText stellen die beiden Zeichenfolgen, mit szCommand2 und szText2 bieten zusätzliche Spalten bei Bedarf. Das Datenelement dwBookmark ist für diesen Anbieter einfach nur-Lese-nicht erforderlich, aber wird später zum Hinzufügen einer IRowsetLocate-Schnittstelleverwendet werden. Der == Operator vergleicht Instanzen. (Implementieren dieser Operator ist optional.)

Um die beiden Zeichenfolgen zu unterstützen, benötigt die PROVIDER_COLUMN_MAP Änderung sowie. Ersetzen Sie die PROVIDER_COLUMN_MAP oben gezeigt, mit der hier gezeigten:

BEGI&N_PROVIDER_COLUMN_MAP()
 Nbsp;  PROVIDER_COLUMN_ENTRY_STR(OLESTR("Command"), 1, 256, GUID_NULL, CAgentMan, SzCommand)
    PROVIDER_COLUMN_ENTRY_STR (OLESTR ("Text"), 2, 256, GUID_NULL, CAgentMan, SzText) PROVIDER_COLUMN_ENTRY_STR(OLESTR("Command2"), 3, 256, GUID_NULL, CAgentMan, szCommand2)
    PROVIDER_COLUMN_ENTRY_STR (OLESTR ("Text2"), 4, 256, GUID_NULL, CAgentMan, szText2)
END_PROVIDER_COLUMN_MAP()

Wenn dies geschehen ist, sollte der Anbieter bereit zum Kompilieren und ausführen. Um den Anbieter zu testen, benötigen Sie einen Consumer mit übereinstimmenden Funktionen. Implementieren eines einfachen Consumers zeigt einen solchen Testconsumer erstellen. Führen Sie den Testconsumer mit dem Provider. Stellen Sie sicher, dass der Testconsumer die richtigen Zeichenfolgen vom Provider abruft, wenn Sie klicken Sie auf die Schaltfläche Ausführen im Dialogfeld Test Verbraucher.

Wenn Sie Ihren Anbieter erfolgreich getestet haben, können Sie seinen Funktionsumfang durch die Implementierung zusätzlicher Schnittstellen erweitern. Ein Beispiel im nächsten Abschnitt, Erweitern des einfachen schreibgeschützten Anbieters.

Index