Vorgehensweise: Abrufen von Spalten mithilfe von IRow::GetColumns (OLE DB)
Die IRow-Schnittstelle ermöglicht den direkten Zugriff auf Spalten einer einzelnen Zeile im Resultset. Daher ist IRow eine effiziente Möglichkeit, Spalten aus einem Resultset mit einer Zeile abzurufen.
Ein Codebeispiel ist verfügbar, das zeigt, wie eine einzelne Zeile mit IRow abgerufen wird. In diesem Beispiel wird jeweils eine Spalte aus der Zeile abgerufen. Das Beispiel zeigt Folgendes:
Wie eine Gruppe von Spalten abgerufen wird (nacheinander).
Wie zweimal auf eine Spalte zugegriffen wird. Das erste Mal wird die Spaltenbreite erfasst, und später wird auf die eigentlichen Daten zugegriffen. Wenn in der DBCOLUMNACCESS-Struktur pData NULL ist und cbMaxLen 0 ist, wird beim Aufruf von IRow->GetColumns() nur die Spaltenlänge zurückgegeben. In diesem Fall kann IRow->GetColumns() wieder in der gleichen Spalte aufgerufen werden, um die eigentlichen Daten abzurufen.
Den vollständigen Beispielcode finden Sie in der Datei FetchColumns_B.cpp. Sie können ein Archiv mit dem Beispiel von der SQL Server Downloads-Seite auf MSDN herunterladen.
Dieses Beispiel wurde mit Microsoft Visual C++ 2005 entwickelt.
Im nachstehenden Code wird die von FetchColumns_B.cpp verwendete Beispieltabelle erstellt.
USE AdventureWorks
GO
IF EXISTS (SELECT name FROM sysobjects WHERE name = 'MyTable')
DROP TABLE MyTable
GO
CREATE TABLE MyTable
(
col1 int,
col2 varchar(50),
col3 char(50),
col4 datetime,
col5 float,
col6 money,
col7 sql_variant,
col8 binary(50),
col9 text,
col10 image
)
GO
INSERT INTO MyTable
values
(
10,
'abcdefghijklmnopqrstuvwxyz',
'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
'11/1/1999 11:52 AM',
3.14,
99.95,
CONVERT(nchar(50), N'AbCdEfGhIjKlMnOpQrStUvWxYz'),
0x123456789,
REPLICATE('AAAAABBBBB', 500),
REPLICATE(0x123456789, 500)
)
GO
Sicherheitshinweis |
---|
Verwenden Sie nach Möglichkeit die Windows-Authentifizierung. Wenn die Windows-Authentifizierung nicht verfügbar ist, fordern Sie die Benutzer auf, ihre Anmeldeinformationen zur Laufzeit einzugeben. Die Anmeldeinformationen sollten nicht in einer Datei gespeichert werden. Wenn Sie die Anmeldeinformationen permanent speichern müssen, verschlüsseln Sie sie mit der Win32 Crypto-API. |
So rufen Sie Spalten mithilfe von IRow::GetColumns ab
Stellen Sie eine Verbindung mit der Datenquelle her.
Führen Sie den Befehl aus (im folgenden Beispiel wird ICommandExecute::Execute() mit IID_IRow aufgerufen).
Führen Sie IRow::GetColumns () aus, um eine oder mehrere Spalten in der resultierenden Zeile abzurufen. Wenn Sie die Spaltengröße vor dem Abrufen der Daten feststellen möchten, setzen Sie pData in DBCOLUMNACCESS auf NULL. Der Aufruf von IRow::GetColumns() gibt nur die Spaltenbreite zurück. Ein erneuter Aufruf von IRow::GetColumns() ruft die Daten ab.
Führen Sie IRow::GetColumns() aus, bis auf alle benötigten Spalten zugegriffen wurde. Auf die Spalten muss nacheinander zugegriffen werden.