Parametr i metadane wierszy
Ten temat zawiera informacje o następujący typ i typ członków, związanych z datą OLE DB i czas ulepszenia.
Struktura DBBINDING
ICommandWithParameters::GetParameterInfo
ICommandWithParameters::SetParameterInfo
IColumnsRowset::GetColumnsRowset
IColumnsInfo::GetColumnInfo
ICommandWithParameters::GetParameterInfo
Następujące informacje są zwracane w strukturze DBPARAMINFO przez prgParamInfo:
Typ parametru |
wType |
ulParamSize |
bPrecision |
bScale |
dwFlags DBPARAMFLAGS_SS_ISVARIABLESCALE |
---|---|---|---|---|---|
data |
DBTYPE_DBDATE |
6 |
10 |
0 |
Wyczyść |
godzina |
DBTYPE_DBTIME2 |
10 |
8, 10..16 |
0..7 |
Zestaw |
smalldatetime |
DBTYPE_DBTIMESTAMP |
16 |
16 |
0 |
Wyczyść |
data_i_godzina |
DBTYPE_DBTIMESTAMP |
16 |
23 |
3 |
Wyczyść |
datetime2 |
DBTYPE_DBTIMESTAMP |
16 |
19,21..27 |
0..7 |
Zestaw |
datetimeoffset |
DBTYPE_DBTIMESTAMPOFFSET |
20 |
26,28..34 |
0..7 |
Zestaw |
Należy zauważyć, że w niektórych przypadkach zakresów wartości nie są ciągłe.Jest to spowodowane dodanie przecinka dziesiętnego po dokładność ułamkowa jest większa od zera.
DBPARAMFLAGS_SS_ISVARIABLESCALE jest prawidłowa tylko po podłączeniu do w SQL Server 2008 (lub nowsze) serwera.Nigdy nie jest DBPARAMFLAGS_SS_ISVARIABLESCALE zestaw po podłączeniu do serwerów niskiego poziomu.
ICommandWithParameters::SetParameterInfo i typy parametrów wprost
Informacje zawarte w strukturze DBPARAMBINDINFO musi spełniać następujące warunki:
pwszDataSourceType (specyficzne dla dostawca) |
pwszDataSourceType (OLE DB generic) |
ulParamSize |
bScale |
---|---|---|---|
|
DBTYPE_DATE |
6 |
Ignorowany |
data |
DBTYPE_DBDATE |
6 |
Ignorowany |
|
DBTYPE_DBTIME |
10 |
Ignorowany |
godzina |
DBTYPE_DBTIME2 |
10 |
0..7 |
smalldatetime |
|
16 |
Ignorowany |
data_i_godzina |
|
16 |
Ignorowany |
datetime2 lub DBTYPE_DBTIMESTAMP |
DBTYPE_DBTIMESTAMP |
16 |
0..7 |
datetimeoffset |
DBTYPE_DBTIMESTAMPOFFSET |
20 |
0..7 |
bPrecision Parametr jest ignorowany.
"DBPARAMFLAGS_SS_ISVARIABLESCALE" jest ignorowane podczas wysyłania danych do serwera.Aplikacje można wymusić użycie typów starszych strumienia danych tabelarycznych (TDS) przy użyciu nazw specyficznych dla dostawca typu "datetime"" and "smalldatetime".When connected to SQL Server 2008 (or later) servers, "datetime2" format will be used and an implicit server conversion will occur, if necessary, when the type name is "datetime2" or "DBTYPE_DBTIMESTAMP".bScale is ignored if the provider specific type names "datetime" or "smalldatetime" are used.W przeciwnym razie appications musi zapewnić, że bScale jest zestaw poprawnie.Uaktualnienie MDAC aplikacji i SQL Server Native Client z SQL Server 2005 , użyj "dbtype_dbtimestamp" zakończy się niepowodzeniem, jeśli nie zestaw bScale poprawnie.Po podłączeniu do wystąpienia serwera starsze niż SQL Server 2008, bScale wartość inną niż 0 lub 3 z "dbtype_dbtimestamp" jest to błąd, zostanie zwrócony E_FAIL.
Gdy ICommandWithParameters::SetParameterInfo nie jest wywoływana, wpisz imples dostawca serwera z typ powiązanie, jak określono w IAccessor::CreateAccessor następująco:
Typ powiązania |
pwszDataSourceType (specyficzne dla dostawca) |
---|---|
DBTYPE_DATE |
datetime2(0) |
DBTYPE_DBDATE |
data |
DBTYPE_DBTIME |
czas(0) |
DBTYPE_DBTIME2 |
czas(7) |
DBTYPE_DBTIMESTAMP |
datetime2(7) |
DBTYPE_DBTIMESTAMPOFFSET |
datetimeoffset(7) |
IColumnsRowset::GetColumnsRowset
IColumnsRowset::GetColumnsRowset zwraca następujące kolumny:
Typ kolumny |
DBCOLUMN_TYPE |
DBCOLUM_COLUMNSIZE |
DBCOLUMN_PRECISION |
DBCOLUMN_SCALE DBCOLUMN_DATETIMEPRECISION |
DBCOLUMN_FLAGS DBCOLUMNFLAGS_SS_ISVARIABLESCALE |
---|---|---|---|---|---|
data |
DBTYPE_DBDATE |
6 |
10 |
0 |
Wyczyść |
godzina |
DBTYPE_DBTIME2 |
10 |
8, 10..16 |
0..7 |
Zestaw |
smalldatetime |
DBTYPE_DBTIMESTAMP |
16 |
16 |
0 |
Wyczyść |
data_i_godzina |
DBTYPE_DBTIMESTAMP |
16 |
23 |
3 |
Wyczyść |
datetime2 |
DBTYPE_DBTIMESTAMP |
16 |
19, 21..27 |
0..7 |
Zestaw |
datetimeoffset |
DBTYPE_DBTIMESTAMPOFFSET |
20 |
26, 28..34 |
0..7 |
Zestaw |
W DBCOLUMN_FLAGS, DBCOLUMNFLAGS_ISFIXEDLENGTH jest zawsze prawdziwe dla daty /czas zawsze są fałszywe typów i następujące flagi:
DBCOLUMNFLAGS_CACHEDEFERRED
DBCOLUMNFLAGS_ISBOOKMARK
DBCOLUMNFLAGS_ISCHAPTER
DBCOLUMNFLAGS_ISLONG
DBCOLUMNFLAGS_ISROWID
DBCOLUMNFLAGS_ISROWVER
DBCOLUMNFLAGS_MAYDEFER
Pozostałe flagi (DBCOLUMNFLAGS_ISNULLABLE, DBCOLUMNFLAGS_MAYBENULL, DBCOLUMNFLAGS_WRITE i DBCOLUMNFLAGS_WRITEUNKNOWN) zestaw w zależności od sposobu zdefiniowania kolumna i rzeczywiste kwerendy.
Nowe flagi DBCOLUMNFLAGS_SS_ISVARIABLESCALE znajduje się w DBCOLUMN_FLAGS, aby umożliwić aplikacji w celu określenia typu serwera kolumn, gdzie DBCOLUMN_TYPE jest DBTYPE_DBTIMESTAMP.DBCOLUMN_SCALE lub DBCOLUMN_DATETIMEPRECISION muszą również używane do identyfikowania typu serwera.
DBCOLUMNFLAGS_SS_ISVARIABLESCALE jest prawidłowa tylko po podłączeniu do w SQL Server 2008 (lub nowsze) serwera.DBCOLUMNFLAGS_SS_ISVARIABLESCALE jest niezdefiniowana, po podłączeniu do niedziałający-poziom serwerów.
IColumnsInfo::GetColumnInfo
Struktura DBCOLUMNINFO zwraca następujące informacje:
Typ parametru |
wType |
ulColumnSize |
bPrecision |
bScale |
dwFlags DBPARAMFLAGS_SS_ISVARIABLESCALE |
---|---|---|---|---|---|
data |
DBTYPE_DBDATE |
6 |
10 |
0 |
Wyczyść |
czas(1..7) |
DBTYPE_DBTIME2 |
10 |
8, 10..16 |
0..7 |
Zestaw |
smalldatetime |
DBTYPE_DBTIMESTAMP |
16 |
16 |
0 |
Wyczyść |
data_i_godzina |
DBTYPE_DBTIMESTAMP |
16 |
23 |
3 |
Wyczyść |
datetime2 |
DBTYPE_DBTIMESTAMP |
16 |
19, 21..27 |
0..7 |
Zestaw |
datetimeoffset |
DBTYPE_DBTIMESTAMPOFFSET |
20 |
26, 28..34 |
0..7 |
Zestaw |
W dwFlags, DBCOLUMNFLAGS_ISFIXEDLENGTH jest zawsze prawdziwe dla data /czas typów i następujące flagi są zawsze false:
DBCOLUMNFLAGS_CACHEDEFERRED
DBCOLUMNFLAGS_ISBOOKMARK
DBCOLUMNFLAGS_ISCHAPTER
DBCOLUMNFLAGS_ISLONG
DBCOLUMNFLAGS_ISROWID
DBCOLUMNFLAGS_ISROWVER MAYDEFER
zestaw flagi pozostałe (DBCOLUMNFLAGS_ISNULLABLE, DBCOLUMNFLAGS_MAYBENULL, DBCOLUMNFLAGS_WRITE i DBCOLUMNFLAGS_WRITEUNKNOWN).
A new flag DBCOLUMNFLAGS_SS_ISVARIABLESCALE is provided in dwFlags to allow an application to determine the server type of columns, where wType is DBTYPE_DBTIMESTAMP.bScale must also be used to identify the server type.