Freigeben über


UpdatePV-Beispiel: Implementiert einen aktualisierbaren OLE DB-Provider

Das UpdatePV-Beispiel ist ein OLE DB-Anbietervorlagen-Beispiel, wie ein aktualisierbarer (Lese/Schreib-) Anbieter implementiert veranschaulicht. Insbesondere veranschaulicht es das unmittelbare und verzögerte Einfügungen/Aktualisierungen/Löschvorgänge durchführen. UpdatePV veranschaulicht außerdem die Verwendung von Schemarowsets (die einigen Assistenten die Interaktion mit einem Anbieter erleichtern). UpdatePV veranschaulicht außerdem die IRowsetLocateImpl-Klasse, die wie MyProv.

Finden Sie in der AdvancedPV-Beispiel für Abbildungen weitere Techniken auf Laden und Speichern von Daten mit einem Anbieter.

SicherheitshinweisSicherheitshinweis

Dieser Beispielcode soll ein Konzept veranschaulichen, und es wird nur den Code, der für dieses Konzept relevant sind. Möglicherweise erfüllt dieser nicht die Sicherheitsanforderungen für eine bestimmte Umgebung, und er sollte nicht genau wie dargestellt verwendet werden. Wir empfehlen, Sicherheits- und Fehlerbehandlungscode hinzuzufügen, um Ihre Projekte sicherer und stabiler zu machen. Microsoft stellt diesen Beispielcode "Wie besehen"keine Garantien.

So erhalten Sie Beispiele und Anweisungen für deren Installation:

Um Beispiele von Visual Studio zuzugreifen

  • im Menü Hilfe Menü klicken Beispiele.

    Standardmäßig sind die Beispiele in installiert. Laufwerk: \Programme\Microsoft visual Studio 10.0\Samples\.

  • Die neueste Version dieses Beispiels und eine Liste der anderen Beispiele finden Sie unter Visual Studio Samples auf der MSDN-Website.

Erstellen und Ausführen des Beispiels

Um im Beispiel beabsichtigten Funktionen zu demonstrieren, erstellen Sie des Beispiels, erstellen Sie ein Consumerprojekt mit einem Accessor für den Anbieter und erstellen Sie eine Konsolenanwendung zugreifen und die Daten ausgeben.

So erstellen und in diesem Beispiel führen

  1. Öffnen Sie die Projektmappendatei UpdatePV.sln.

  2. Erstellen Sie aus der Menü, und klicken Sie auf Projektmappe.

  3. Erstellen Sie ein Consumerprojekt mit dem ATL-Projekt-Assistenten (Stellen Sie eine attributierte DLL).

  4. Fügen Sie dem Consumerprojekt einen OLE DB-Consumer (von Klasse hinzufügen, select ATL-OLE DB-Consumer) hinzu.

  5. Der ATL-OLE DB-Consumer-Assistenten klicken Sie auf die Schaltfläche Datenquelle , und wählen Sie im DatenverknüpfungseigenschaftenUpProv OLE DB-Provider. (Anbieter UpProv sollte automatisch registriert werden, wenn Sie UpdatePV erstellen, aber wenn Sie nicht sehen Sie hier aufgeführt führen regsvr32.exe auf UpdatePV.dll.)

  6. Klicken Sie auf Next wechseln Sie zu Registerkarte Verbindung und dann unter geben den Anfangskatalog, verwendet, überprüfen Sie der Pfadnamen der MyData.txt.

  7. Klicken Sie auf OK. Dialogfeld Datenbankobjekt auswählen wird angezeigt und dann öffnen Tabellen;Es gibt nur ein Element: der Pfadname für MyData.txt. Wählen Sie es und klicken Sie auf OK. Sie kehren zum ATL-OLE DB-Consumer-Assistenten zurück.

  8. Der ATL-OLE DB-Consumer-Assistenten wählen Sie Tabelle, Umbenennen Sie die Klasse etwas kürzer (falls erforderlich) z. B. CMyConsund klicken Sie auf Ende.

  9. Schließen Sie das Dialogfeld Sicherheitswarnung, das durch Drücken OK aufgeklappt.

  10. Entfernen Sie diese Zeile aus CMyCons.h:

    #error Security Issue: The connection string may contain a password
    

    Diese Zeile verhindert die Kompilierung, aber Sie auf die Tatsache hingewiesen, dass (in realen Szenarios) vertraulicher Informationen geschützt werden sollen eingefügt wird.

  11. Erstellen Sie das Consumerprojekt durch Klicken mit der rechten Maustaste auf den Projektknoten in der Projektmappen-Explorer und auf erstellen.

  12. Erstellen einer neuen Konsolenanwendung. In der CPP-Datei der Consumer-Header, und ändern Sie den Code wie folgt:

    #include "stdafx.h"
    #include <atldbcli.h>
    #include "..\consumer\cmycons.h"
    
    int _tmain(int argc, _TCHAR* argv[])
    {
       HRESULT hr = CoInitialize(NULL);
    
       CMyCons c;
    
       hr = c.OpenAll();
       ATLASSERT( SUCCEEDED( hr ) );
    
       hr = c.MoveFirst();
       while( SUCCEEDED(hr) && hr != DB_S_ENDOFROWSET )
       {
          printf( "%d %s %s %s %s\n", c.m_Fixed, c.m_Command, c.m_Text, 
             c.m_Command2, c.m_Text2 );
          hr = c.MoveNext();
       }
    
       c.CloseAll();
       CoUninitialize();
       return 0;
    }
    
  13. Fügen Sie einen Haltepunkt zu der Funktion CoUninitialize;Dadurch wird die Konsole geöffnet bleiben, so dass Sie die Ergebnisse anzeigen können. Führen Sie die Konsolenanwendung aus der Entwicklungsumgebung, indem Sie auf die Schaltfläche Start. Es sollten fünf Spalten mit Text (ein Index für Spalte und vier Textspalten) ausgedruckt angezeigt werden.

Funktionsweise des Beispiels

UpdatePV baut auf die C-Laufzeitdatei e/A-Funktionen auf. Dies stellt einen Datenspeicher. Insbesondere wird im Beispiel wird eine Textdatei, bestehend aus einem Paar von Datenelementen und wandelt es in einem Rowset. Das Beispiel enthält eine Textdatei MyData.txt, die Paare von Datenelementen enthält. Allerdings können Sie es gegen jede Textdatei ausführen (es wird einfach alles in zwei-Wort Tupel analysiert).

UpdatePV führt die Leseoperationen mit RUpdateRowset::Execute (rowset.h). Die Schreibvorgänge werden mit RUpdateRowset::FlushData (rowset.h) behandelt. Diese werden Funktionen, die als Teil der normalen Provider-Vorgang von OLE DB-Anbietervorlagen aufgerufen. Das Beispiel verwendet die OLE DB-Anbietervorlagen IRowsetChangeImpl und IRowsetUpdateImpl Klassen. IRowsetChangeImpl-Klasse bietet Unterstützung für unmittelbare Einfügungen/Aktualisierungen/Löschvorgänge. Die IRowsetUpdateImpl Klasse Unterstützung für verzögerte Einfügungen/Aktualisierungen/Löschvorgänge. IRowsetUpdateImpl -Klasse erbt von IRowsetChangeImpl. Weitere Informationen abrufen/Einrichten von Daten finden Sie unter Erstellen eines aktualisierbaren Providers in der Visual C++-Dokumentation und Updating Data in RowsetsOLE DB Programmer's Reference in der Dokumentation Windows SDK.

UpdatePV bietet außerdem Unterstützung für Schemarowsets. Diesen Schemarowsets können Consumer Informationen über einen Anbieter ermitteln, ohne einen Rowset öffnen oder Ausführen eines Befehls zu. Die Visual C++-Assistenten verwenden Schemarowsets zum Generieren von Accessoren für Client-Seite. Die wichtigsten Funktionen sind CUpdateSessionTRSchemaRowset::ExecuteCUpdateSessionColSchemaRowset::Executeund CUpdateSessionPTSchemaRowset::Execute. Alle drei Funktionen geben an, welche Anbieter Tabellen unterstützt, auf die Tabellen, Spalten und Datentypen in den Tabellen zurück. Weitere Informationen zu Schemarowsets finden Sie unter die Schnittstelle IDBSchemaRowsetOLE DB Programmer's Reference.

Schlüsselwörter

Dieses Beispiel demonstriert die folgenden Schnittstellen:

IRowsetChange, IRowsetUpdateImpl

Dieses Beispiel demonstriert die folgenden Eigenschaften:

DBPROP_IRowsetChange , DBPROP_IRowsetUpdate

Siehe auch

Weitere Ressourcen

ATL-Beispiele