共用方式為


如何:使用 IRow::GetColumns (或 IRow::Open) 和 ISequentialStream 來提取資料行

您可以使用 ISequentialStream 介面來繫結或擷取大型資料。若為繫結資料行,狀態旗標 DBSTATUS_S_TRUNCATED 會指出資料是否遭到截斷。

完整的範例程式碼位於這個 FetchColumns_A.cpp 檔案中。您可以從 MSDN 網站上的 SQL Server 下載頁面下載含有範例的封存。

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

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

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

/* Enter data. */
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 (或 IRow::Open) 和 ISequentialStream 來提取資料行

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

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

  3. 使用 IRow::Open() 或 IRow::GetColumns() 來提取資料行資料。

    • IRow::Open() 可用來開啟資料列的 ISequentialStream。指定 DBGUID_STREAM,表示資料行包含二進位資料的資料流 (然後 IStream 或 ISequentialStream 就可用來讀取資料行中的資料)。

    • 如果使用了 IRow::GetColumns(),DBCOLUMNACCESS 結構的 pData 元素就會設定為指向資料流物件。

  4. 重複使用 ISequentialStream::Read(),將指定的位元組數目讀入取用者緩衝區中。

請參閱

其他資源