Rowsets

Ein Rowset ist ein Satz von Zeilen, die Spalten mit Daten enthalten. Rowsets sind die zentralen Objekte, die es allen OLE DB-Datenanbietern ermöglichen, Resultsetdaten in tabellarischer Form verfügbar zu machen.

Nachdem ein Consumer mithilfe der IDBCreateSession::CreateSession-Methode eine Sitzung erstellt hat, kann der Consumer entweder die IOpenRowset-Schnittstelle oder die IDBCreateCommand-Schnittstelle der Sitzung verwenden, um ein Rowset zu erstellen. Der SQL Server Native Client OLE DB-Anbieter unterstützt die beiden Schnittstellen. Diese beiden Methoden werden im Folgenden beschrieben.

  • Erstellen Sie ein Rowset, indem Sie die IOpenRowset::OpenRowset-Methode aufrufen.

    Dies entspricht dem Erstellen eines Rowsets über eine einzelne Tabelle. Die Methode öffnet ein Rowset, das alle Zeilen aus einer einzelnen Basistabelle enthält, und gibt es zurück. Eines der Argumente von OpenRowset ist eine Tabellen-ID, die die Tabelle identifiziert, aus der das Rowset erstellt werden soll.

  • Erstellen Sie ein Befehlsobjekt, indem Sie die IDBCreateCommand::CreateCommand-Methode aufrufen.

    Das Befehlsobjekt führt Befehle aus, die der Anbieter unterstützt. Im SQL Server Native Client OLE DB-Anbieter kann der Consumer eine beliebige Transact-SQL-Anweisung angeben, beispielsweise eine SELECT-Anweisung oder einen Aufruf einer gespeicherten Prozedur. Die Schritte zum Erstellen eines Rowsets mit einem Befehlsobjekt sind folgende:

    1. Der Consumer ruft die IDBCreateCommand::CreateCommand-Methode der Sitzung auf, um ein Befehlsobjekt zu erhalten, das die ICommandText-Schnittstelle des Befehlsobjekts anfordert. Diese ICommandText-Schnittstelle legt den eigentlichen Befehlstext fest und ruft ihn ab. Der Consumer gibt den Textbefehl ein, indem er die ICommandText::SetCommandText-Methode aufruft.

    2. Der Benutzer ruft die ICommand::Execute-Methode für den Befehl auf. Das Rowsetobjekt, das erstellt wird, wenn der Befehl ausgeführt wird, enthält das Resultset aus dem Befehl.

Der Consumer kann die ICommandProperties-Schnittstelle verwenden, um die Eigenschaften des Rowsets, das von dem in den ICommand::Execute-Schnittstellen ausgeführten Befehl zurückgegeben wurde, abzurufen oder festzulegen. Die am häufigsten angeforderten Eigenschaften sind die Schnittstellen, die das Rowset unterstützen muss. Zusätzlich zu Schnittstellen kann der Consumer Eigenschaften anfordern, die das Verhalten des Rowsets oder der Schnittstelle verändern.

Consumer geben Rowsets mit der IRowset::Release-Methode frei. Mit der Freigabe eines Rowsets werden alle Zeilenhandles freigegeben, die der Consumer für dieses Rowset besitzt. Accessoren werden jedoch bei der Freigabe eines Rowsets nicht freigegeben. Wenn Sie über eine IAccessor-Schnittstelle verfügen, muss diese noch freigegeben werden.