共用方式為


如何:使用 IRow::GetColumns 提取資料行 (OLE DB)

IRow 介面允許直接存取結果集中單一資料列的資料行。因此,IRow 是從包含一個資料列之結果集擷取資料行的有效方式。

系統會提供一個程式碼範例,顯示如何使用 IRow 提取單一資料列。在此範例中,系統會從資料列一次擷取一個資料行。此範例會示範:

  • 如何提取資料行的群組 (依序)。

  • 如何存取兩次資料行。第一次會先取得實際的資料行寬度,然後再存取實際的資料。在 DBCOLUMNACCESS 結構中,如果 pData 為 NULL,而 cbMaxLen 為 0,IRow->GetColumns() 的呼叫僅會傳回實際的資料行長度。在此情況下,可以在相同的資料行上再呼叫 IRow->GetColumns() 一次來擷取實際的資料。

完整的範例程式碼位於 FetchColumns_B.cpp 檔案中。您可以從 MSDN 的 SQL Server 下載 (英文) 頁面下載含有範例的封存。

這個範例是用 Microsoft Visual C++ 2005 所開發的。

下列程式碼會建立 FetchColumns_B.cpp 所使用的範例資料表。

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
安全性注意事項安全性注意事項

儘可能使用 Windows 驗證。如果無法使用 Windows 驗證,請提示使用者在執行階段輸入認證。請避免將認證儲存在檔案中。如果您必須保存認證,則應該用 Win32 crypto API 加密這些認證。

使用 IRow::GetColumns 提取資料行

  1. 建立資料來源的連接。

  2. 執行命令 (在下列範例中,ICommandExecute::Execute() 是使用 IID_IRow 呼叫的)。

  3. 執行 IRow::GetColumns() 來提取所產生之資料列中的一或多個資料行。如果您要在提取資料前尋找實際的資料行大小,將 DBCOLUMNACCESS 中的 pData 設定為 NULL。IRow::GetColumns() 的呼叫僅會傳回資料行寬度。IRow::GetColumns() 的另一個呼叫將會提取資料。

  4. 執行 IRow::GetColumns(),直到存取所需的所有資料行為止。資料行必須依序進行存取。

請參閱

其他資源