Jak Pobieranie kolumny przy użyciu IRow::GetColumns (lub IRow::Open) i ISequentialStream
Duże dane mogą być powiązane lub pobrać za pomocą ISequentialStream interfejs. Dla kolumny związanej Flaga stanu DBSTATUS_S_TRUNCATED wskazuje, że dane są obcięte.
Zakończenie przykładowy kod znajduje się w tym pliku FetchColumns_A.cpp.Możesz pobrać próbką z archiwum Pliki do pobrania program SQL Server strona w witrynie MSDN.
W tym przykładzie został opracowany przy użyciu programu Microsoft Visual C++ 2005.
Poniższy kod tworzy przykładową tabela używane przez aplikację.
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
Security Note: |
|---|
Gdy jest to możliwe, należy używać uwierzytelniania systemu Windows.Jeśli uwierzytelnianie systemu Windows nie jest dostępne, monitu użytkowników o wprowadzenie poświadczenia w czasie wykonywania.Należy unikać przechowywania poświadczenia w pliku.Jeśli muszą przetrwać poświadczenia, należy je z zaszyfrować Win32 crypto API. |
Do pobierania kolumn przy użyciu IRow::GetColumns (lub IRow::Open) i ISequentialStream
Ustanów połączenie ze źródłem danych.
wykonać polecenia (w tym przykładzie ICommandExecute::Execute() jest wywoływana z IID_IRow).
Pobieranie, używając danych kolumna IRow::Open() lub IRow::GetColumns().
IRow::Open() Służy do otwierania ISequentialStream w wierszu. Określ DBGUID_STREAM oznacza, że kolumna zawiera strumień danych binarnych)IStream lub ISequentialStream Następnie można odczytać danych z kolumny).
Jeśli IRow::GetColumns() jest używana, pData element konstrukcji DBCOLUMNACCESS ustawiono wskaż obiektu strumienia.
Użycie ISequentialStream::Read() Aby odczytać określoną liczbę bajtów w buforze klienta.
Security Note: