Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cette rubrique fournit des informations sur le type et les membres de type suivants en rapport avec les améliorations de date et d'heure OLE DB.
Structure DBBINDING
ICommandWithParameters::GetParameterInfoICommandWithParameters::SetParameterInfoIColumnsRowset::GetColumnsRowsetIColumnsInfo::GetColumnInfo
ICommandWithParameters ::GetParameterInfo
Les informations suivantes sont retournées dans la structure DBPARAMINFO via prgParamInfo :
| Type de paramètre | wType | ulParamSize | bPrecision | bScale |
dwFlags DBPARAMFLAGS_SS_ISVARIABLESCALE |
|---|---|---|---|---|---|
| date | DBTYPE_DBDATE | 6 | 10 | 0 | Effacer |
| Heure | DBTYPE_DBTIME2 | 10 | 8, 10..16 | 0..7 | Définissez |
| smalldatetime | DBTYPE_DBTIMESTAMP | 16 | 16 | 0 | Effacer |
| date/heure | DBTYPE_DBTIMESTAMP | 16 | 23 | 3 | Effacer |
| datetime2 | DBTYPE_DBTIMESTAMP | 16 | 19,21..27 | 0..7 | Définissez |
| datetimeoffset | DBTYPE_DBTIMESTAMPOFFSET | 20 | 26,28..34 | 0..7 | Définissez |
Notez que, dans certains cas, les plages de valeurs ne sont pas continues. Cela est dû à l'ajout d'une virgule décimale lorsque la précision fractionnaire est supérieure à zéro.
DBPARAMFLAGS_SS_ISVARIABLESCALE est valide uniquement lorsqu’il est connecté à un serveur SQL Server 2008 (ou version ultérieure). DBPARAMFLAGS_SS_ISVARIABLESCALE n’est jamais défini en cas de connexion à des serveurs de bas niveau.
ICommandWithParameters::SetParameterInfo et types de paramètre implicites
Les informations fournies dans la structure DBPARAMBINDINFO doivent respecter les conditions suivantes :
|
pwszDataSourceType (spécifique au fournisseur) |
pwszDataSourceType (OLE DB générique) |
ulParamSize | bScale |
|---|---|---|---|
| DBTYPE_DATE | 6 | Ignoré | |
| date | DBTYPE_DBDATE | 6 | Ignoré |
| DBTYPE_DBTIME | 10 | Ignoré | |
| Heure | DBTYPE_DBTIME2 | 10 | 0..7 |
| smalldatetime | 16 | Ignoré | |
| date/heure | 16 | Ignoré | |
| datetime2 ou DBTYPE_DBTIMESTAMP | DBTYPE_DBTIMESTAMP | 16 | 0..7 |
| datetimeoffset | DBTYPE_DBTIMESTAMPOFFSET | 20 | 0..7 |
Le paramètre bPrecision est ignoré.
« DBPARAMFLAGS_SS_ISVARIABLESCALE » est ignoré lors de l'envoi de données au serveur. Les applications peuvent forcer l’utilisation de types de flux de données tabulaires hérités (TDS) à l’aide des noms de types spécifiques au fournisseur «datetime » et «smalldatetime ». Lorsque vous êtes connecté à des serveurs SQL Server 2008 (ou version ultérieure), le format «datetime2 » est utilisé et une conversion de serveur implicite se produit, si nécessaire, lorsque le nom du type est «datetime2 » ou « DBTYPE_DBTIMESTAMP ».
bScale est ignoré si les noms de type spécifiques du fournisseur «datetime » ou «smalldatetime » sont utilisés. Sinon, les appications doivent s’assurer que bScale est correctement défini. Les applications mises à niveau à partir de MDAC et SQL Server Native Client à partir de SQL Server 2005 qui utilisent « DBTYPE_DBTIMESTAMP » échouent s’ils ne définissent pas bScale correctement. Lorsque vous êtes connecté à des instances de serveur antérieures à SQL Server 2008, une valeur bScale autre que 0 ou 3 avec « DBTYPE_DBTIMESTAMP » est une erreur et E_FAIL est retournée.
Lorsque ICommandWithParameters ::SetParameterInfo n’est pas appelé, le fournisseur impule le type de serveur à partir du type de liaison spécifié dans IAccessor ::CreateAccessor comme suit :
| Type de liaison |
pwszDataSourceType (spécifique au fournisseur) |
|---|---|
| DBTYPE_DATE | datetime2(0) |
| DBTYPE_DBDATE | date |
| DBTYPE_DBTIME | time(0) |
| DBTYPE_DBTIME2 | time(7) |
| DBTYPE_DBTIMESTAMP | datetime2(7) |
| DBTYPE_DBTIMESTAMPOFFSET | datetimeoffset(7) |
IColumnsRowset ::GetColumnsRowset
IColumnsRowset::GetColumnsRowset retourne les colonnes suivantes :
| Type de colonne | DBCOLUMN_TYPE | DBCOLUM_COLUMNSIZE | DBCOLUMN_PRECISION | DBCOLUMN_SCALE, DBCOLUMN_DATETIMEPRECISION | DBCOLUMN_FLAGS, DBCOLUMNFLAGS_SS_ISVARIABLESCALE |
|---|---|---|---|---|---|
| date | DBTYPE_DBDATE | 6 | 10 | 0 | Effacer |
| Heure | DBTYPE_DBTIME2 | 10 | 8, 10..16 | 0..7 | Définissez |
| smalldatetime | DBTYPE_DBTIMESTAMP | 16 | 16 | 0 | Effacer |
| date/heure | DBTYPE_DBTIMESTAMP | 16 | 23 | 3 | Effacer |
| datetime2 | DBTYPE_DBTIMESTAMP | 16 | 19, 21..27 | 0..7 | Définissez |
| datetimeoffset | DBTYPE_DBTIMESTAMPOFFSET | 20 | 26, 28..34 | 0..7 | Définissez |
Dans DBCOLUMN_FLAGS, DBCOLUMNFLAGS_ISFIXEDLENGTH a toujours la valeur True pour les types date/heure et les indicateurs suivants sont toujours False :
DBCOLUMNFLAGS_CACHEDEFERRED
DBCOLUMNFLAGS_ISBOOKMARK
DBCOLUMNFLAGS_ISCHAPTER
DBCOLUMNFLAGS_ISLONG
DBCOLUMNFLAGS_ISROWID
DBCOLUMNFLAGS_ISROWVER
DBCOLUMNFLAGS_MAYDEFER
Les indicateurs restants (DBCOLUMNFLAGS_ISNULLABLE, DBCOLUMNFLAGS_MAYBENULL, DBCOLUMNFLAGS_WRITE et DBCOLUMNFLAGS_WRITEUNKNOWN) peuvent être définis, en fonction de la manière dont la colonne est définie et de la requête réelle.
Un nouvel indicateur DBCOLUMNFLAGS_SS_ISVARIABLESCALE est fourni dans DBCOLUMN_FLAGS pour permettre à une application de déterminer le type de serveur de colonnes, où DBCOLUMN_TYPE représente DBTYPE_DBTIMESTAMP. DBCOLUMN_SCALE ou DBCOLUMN_DATETIMEPRECISION doit également être utilisé pour identifier le type de serveur.
DBCOLUMNFLAGS_SS_ISVARIABLESCALE est valide uniquement lorsqu’il est connecté à un serveur SQL Server 2008 (ou version ultérieure). DBCOLUMNFLAGS_SS_ISVARIABLESCALE est non défini en cas de connexion à des serveurs de bas niveau.
IColumnsInfo ::GetColumnInfo
La structure DBCOLUMNINFO retourne les informations suivantes :
| Type de paramètre | wType | ulColumnSize | bPrecision | bScale |
dwFlags DBPARAMFLAGS_SS_ISVARIABLESCALE |
|---|---|---|---|---|---|
| date | DBTYPE_DBDATE | 6 | 10 | 0 | Effacer |
| time(1..7) | DBTYPE_DBTIME2 | 10 | 8, 10..16 | 0..7 | Définissez |
| smalldatetime | DBTYPE_DBTIMESTAMP | 16 | 16 | 0 | Effacer |
| date/heure | DBTYPE_DBTIMESTAMP | 16 | 23 | 3 | Effacer |
| datetime2 | DBTYPE_DBTIMESTAMP | 16 | 19, 21..27 | 0..7 | Définissez |
| datetimeoffset | DBTYPE_DBTIMESTAMPOFFSET | 20 | 26, 28..34 | 0..7 | Définissez |
Dans dwFlags, DBCOLUMNFLAGS_ISFIXEDLENGTH a toujours la valeur True pour les types date/heure et les indicateurs suivants sont toujours False :
DBCOLUMNFLAGS_CACHEDEFERRED
DBCOLUMNFLAGS_ISBOOKMARK
DBCOLUMNFLAGS_ISCHAPTER
DBCOLUMNFLAGS_ISLONG
DBCOLUMNFLAGS_ISROWID
DBCOLUMNFLAGS_ISROWVER, MAYDEFER
Les indicateurs restants (DBCOLUMNFLAGS_ISNULLABLE, DBCOLUMNFLAGS_MAYBENULL, DBCOLUMNFLAGS_WRITE et DBCOLUMNFLAGS_WRITEUNKNOWN) peuvent être définis.
Un nouvel indicateur, DBCOLUMNFLAGS_SS_ISVARIABLESCALE, est fourni dans dwFlags pour permettre à une application de déterminer le type de serveur des colonnes, où wType est DBTYPE_DBTIMESTAMP. bScale doit aussi être utilisé pour identifier le type de serveur.