Condividi tramite


Metadati per parametri e set di righe

In questo argomento vengono fornite informazioni sul tipo e sui membri di tipo seguenti, relativi ai miglioramenti apportati alle funzionalità di data e ora OLE DB.

  • Struttura DBBINDING

  • ICommandWithParameters::GetParameterInfo

  • ICommandWithParameters::SetParameterInfo

  • IColumnsRowset::GetColumnsRowset

  • IColumnsInfo::GetColumnInfo

ICommandWithParameters::GetParameterInfo

Le informazioni seguenti vengono restituite nella struttura DBPARAMINFO attraverso prgParamInfo:

Tipo di parametro wType ulParamSize bPrecision bScale dwFlags

DBPARAMFLAGS_SS_ISVARIABLESCALE
dattero DBTYPE_DBDATE 6 10 0 Chiaro
tempo DBTYPE_DBTIME2 10 8, 10..16 0..7 Impostare
smalldatetime DBTYPE_DBTIMESTAMP 16 16 0 Chiaro
data e ora DBTYPE_DBTIMESTAMP 16 23 3 Chiaro
datetime2 DBTYPE_DBTIMESTAMP 16 19,21..27 0..7 Impostare
datetimeoffset DBTYPE_DBTIMESTAMPOFFSET 20 26,28..34 0..7 Impostare

Tenere presente che in alcuni casi gli intervalli di valori non sono continui Ciò è dovuto all'aggiunta di un separatore decimale quando la precisione frazionaria è maggiore di zero.

DBPARAMFLAGS_SS_ISVARIABLESCALE è valido solo quando si è connessi a un server SQL Server 2008 (o versione successiva). DBPARAMFLAGS_SS_ISVARIABLESCALE non viene mai impostato quando si è connessi a server legacy.

ICommandWithParameters::SetParameterInfo e tipi di parametri impliciti

Le informazioni specificate nella struttura DBPARAMBINDINFO devono essere conformi agli elementi seguenti:

pwszDataSourceType

(specifico del provider)
pwszDataSourceType

(generico di OLE DB)
ulParamSize bScale
DBTYPE_DATE 6 Ignorato
dattero DBTYPE_DBDATE 6 Ignorato
DBTYPE_DBTIME 10 Ignorato
tempo DBTYPE_DBTIME2 10 0..7
smalldatetime 16 Ignorato
data e ora 16 Ignorato
datetime2 o DBTYPE_DBTIMESTAMP DBTYPE_DBTIMESTAMP 16 0..7
datetimeoffset DBTYPE_DBTIMESTAMPOFFSET 20 0..7

Il parametro bPrecision viene ignorato.

"DBPARAMFLAGS_SS_ISVARIABLESCALE" viene ignorato in caso di invio di dati al server. Le applicazioni possono forzare l'uso di tipi TDS (Tabular-Data Stream) legacy usando i nomi di tipo specifici del provider "datetime" e "smalldatetime". Quando si è connessi a server SQL Server 2008 (o versioni successive), verrà usato il formato "datetime2" e si verificherà una conversione implicita del server, se necessario, quando il nome del tipo è "datetime2" o "DBTYPE_DBTIMESTAMP". bScale viene ignorato se vengono usati nomi di tipo specifici del provider "datetime" o "smalldatetime". In caso contrario, le appicazioni devono assicurarsi che bScale sia impostato correttamente. Le applicazioni aggiornate da MDAC e SQL Server Native Client da SQL Server 2005 che usano "DBTYPE_DBTIMESTAMP" avranno esito negativo se non impostano correttamente bScale . Quando si è connessi alle istanze del server precedenti a SQL Server 2008, un valore bScale diverso da 0 o 3 con "DBTYPE_DBTIMESTAMP" è un errore e verrà restituito E_FAIL.

Quando non viene chiamato ICommandWithParameters::SetParameterInfo, il provider implida il tipo di server dal tipo di associazione come specificato in IAccessor::CreateAccessor come indicato di seguito:

Tipo di associazione pwszDataSourceType

(specifico del provider)
DBTYPE_DATE datetime2(0)
DBTYPE_DBDATE dattero
DBTYPE_DBTIME time(0)
DBTYPE_DBTIME2 time(7)
DBTYPE_DBTIMESTAMP datetime2(7)
DBTYPE_DBTIMESTAMPOFFSET datetimeoffset(7)

IColumnsRowset::GetColumnsRowset

IColumnsRowset::GetColumnsRowset restituisce le colonne seguenti:

Tipo di colonna DBCOLUMN_TYPE DBCOLUM_COLUMNSIZE DBCOLUMN_PRECISION DBCOLUMN_SCALE, DBCOLUMN_DATETIMEPRECISION DBCOLUMN_FLAGS, DBCOLUMNFLAGS_SS_ISVARIABLESCALE
dattero DBTYPE_DBDATE 6 10 0 Chiaro
tempo DBTYPE_DBTIME2 10 8, 10..16 0..7 Impostare
smalldatetime DBTYPE_DBTIMESTAMP 16 16 0 Chiaro
data e ora DBTYPE_DBTIMESTAMP 16 23 3 Chiaro
datetime2 DBTYPE_DBTIMESTAMP 16 19, 21..27 0..7 Impostare
datetimeoffset DBTYPE_DBTIMESTAMPOFFSET 20 26, 28..34 0..7 Impostare

In DBCOLUMN_FLAGS il valore di DBCOLUMNFLAGS_ISFIXEDLENGTH è sempre true per i tipi date/time e il valore dei flag seguenti è sempre false:

  • DBCOLUMNFLAGS_CACHEDEFERRED

  • DBCOLUMNFLAGS_ISBOOKMARK

  • DBCOLUMNFLAGS_ISCHAPTER

  • DBCOLUMNFLAGS_ISLONG

  • DBCOLUMNFLAGS_ISROWID

  • DBCOLUMNFLAGS_ISROWVER

  • DBCOLUMNFLAGS_MAYDEFER

I flag restanti (DBCOLUMNFLAGS_ISNULLABLE, DBCOLUMNFLAGS_MAYBENULL, DBCOLUMNFLAGS_WRITE e DBCOLUMNFLAGS_WRITEUNKNOWN) possono essere impostati in base alla modalità di definizione della colonna e alla query effettiva.

In DBCOLUMN_FLAGS è disponibile un nuovo flag DBCOLUMNFLAGS_SS_ISVARIABLESCALE che consente di determinare il tipo di server delle colonne nelle applicazioni, dove DBCOLUMN_TYPE è DBTYPE_DBTIMESTAMP. Per identificare il tipo di server è necessario utilizzare anche DBCOLUMN_SCALE o DBCOLUMN_DATETIMEPRECISION.

DBCOLUMNFLAGS_SS_ISVARIABLESCALE è valido solo quando si è connessi a un server SQL Server 2008 (o versione successiva). DBCOLUMNFLAGS_SS_ISVARIABLESCALE non è definito quando si è connessi a server legacy.

IColumnsInfo::GetColumnInfo

La struttura DBCOLUMNINFO restituisce le informazioni seguenti:

Tipo di parametro wType ulColumnSize bPrecision bScale dwFlags

DBPARAMFLAGS_SS_ISVARIABLESCALE
dattero DBTYPE_DBDATE 6 10 0 Chiaro
time(1..7) DBTYPE_DBTIME2 10 8, 10..16 0..7 Impostare
smalldatetime DBTYPE_DBTIMESTAMP 16 16 0 Chiaro
data e ora DBTYPE_DBTIMESTAMP 16 23 3 Chiaro
datetime2 DBTYPE_DBTIMESTAMP 16 19, 21..27 0..7 Impostare
datetimeoffset DBTYPE_DBTIMESTAMPOFFSET 20 26, 28..34 0..7 Impostare

In dwFlags il valore di DBCOLUMNFLAGS_ISFIXEDLENGTH è sempre true per i tipi date/time e il valore dei flag seguenti è sempre false:

  • DBCOLUMNFLAGS_CACHEDEFERRED

  • DBCOLUMNFLAGS_ISBOOKMARK

  • DBCOLUMNFLAGS_ISCHAPTER

  • DBCOLUMNFLAGS_ISLONG

  • DBCOLUMNFLAGS_ISROWID

  • DBCOLUMNFLAGS_ISROWVER, MAYDEFER

I flag restanti (DBCOLUMNFLAGS_ISNULLABLE, DBCOLUMNFLAGS_MAYBENULL, DBCOLUMNFLAGS_WRITE e DBCOLUMNFLAGS_WRITEUNKNOWN) possono essere impostati.

In dwFlags viene specificato un nuovo flag DBCOLUMNFLAGS_SS_ISVARIABLESCALE per consentire a un'applicazione di determinare il tipo di server delle colonne in cui wType è DBTYPE_DBTIMESTAMP. Per identificare il tipo di server usare anche bScale.

Vedere anche

metadati [OLE DB]