Partager via


SQL à C : Caractère

Les identificateurs des types de données SQL ODBC de caractère sont les suivants :

  • SQL_CHAR
  • SQL_VARCHAR
  • SQL_LONGVARCHAR
  • SQL_WCHAR
  • SQL_WVARCHAR
  • SQL_WLONGVARCHAR

Le tableau suivant montre les types de données ODBC C vers lesquels les données SQL caractères peuvent être converties. Pour obtenir une explication des colonnes et des termes de la table, consultez Conversion de données de SQL en types de données C.

Identificateur de type C Test TargetValuePtr StrLen_or_IndPtr SQLSTATE
SQL_C_CHAR Longueur en octets des données <BufferLength

Longueur en octets des données >= BufferLength
Données

Données tronquées
Longueur des données en octets

Longueur des données en octets
n/a

01004
SQL_C_WCHAR Longueur de caractères des données <BufferLength

Longueur des caractères des données >= BufferLength
Données

Données tronquées
Longueur des données en caractères

Longueur des données en caractères
n/a

01004
SQL_C_STINYINT SQL_C_UTINYINT SQL_C_TINYINT SQL_C_SBIGINT SQL_C_UBIGINT SQL_C_SSHORT SQL_C_USHORT SQL_C_SHORT SQL_C_SLONG SQL_C_ULONG SQL_C_LONG SQL_C_NUMERIC Données converties sans troncation[b]

Données converties avec troncation de chiffres fractionnaires[a]

La conversion de données entraînerait la perte de chiffres entiers (par opposition à des chiffres fractionnaires)[a]

Les données ne sont pas un littéral numérique[b]
Données

Données tronquées

Indéfini

Indéfini
Nombre d’octets du type de données C

Nombre d’octets du type de données C

Indéfini

Indéfini
n/a

01S07

22003

22018
SQL_C_FLOAT SQL_C_DOUBLE Les données se trouvent dans la plage du type de données vers lequel le nombre est converti[a]

Les données se trouvent en dehors de la plage du type de données vers lequel le nombre est converti[a]

Les données ne sont pas un littéral numérique[b]
Données

Indéfini

Indéfini
Taille du type de données C

Indéfini

Indéfini
n/a

22003

22018
SQL_C_BIT Les données sont 0 ou 1

Les données sont supérieures à 0, inférieures à 2 et non égales à 1

Les données sont inférieures à 0 ou supérieures ou égales à 2

Les données ne sont pas un littéral numérique
Données

Données tronquées

Indéfini

Indéfini
1[b]

1[b]

Indéfini

Indéfini
n/a

01S07

22003

22018
SQL_C_BINARY Longueur en octets des données <= BufferLength

Longueur en octets des données >BufferLength
Données

Données tronquées
Longueur des données en octets

Longueur des données
n/a

01004
SQL_C_TYPE_DATE La valeur de données est une valeur de date valide[a]

La valeur de données est une valeur d’horodatage valide ; la partie de temps est égale à zéro[a]

La valeur de données est une valeur d’horodatage valide ; la partie time est différente de zéro[a],[c]

La valeur de données n’est pas une valeur date-valeur ou timestamp-value valide[a]
Données

Données

Données tronquées

Indéfini
6[b]

6[b]

6[b]

Indéfini
n/a

n/a

01S07

22018
SQL_C_TYPE_TIME La valeur de données est une valeur de temps valide et la valeur de fraction de secondes est 0[a]

La valeur de données est une valeur d’horodatage ou une valeur de temps valide ; fraction de secondes la portion est égale à zéro[a],[d]

La valeur de données est une valeur d’horodatage valide ; fractions de secondes la partie est différente de zéro[a],[d],[e]

La valeur de données n’est pas une valeur de temps ou une valeur d’horodatage valide[a]
Données

Données

Données tronquées

Indéfini
6[b]

6[b]

6[b]

Indéfini
n/a

n/a

01S07

22018
SQL_C_TYPE_TIMESTAMP La valeur de données est une valeur d’horodatage ou une valeur de temps valide ; fractions de secondes non tronquées[a]

La valeur de données est une valeur d’horodatage ou une valeur de temps valide ; fractions de secondes tronquées[a]

La valeur de données est une valeur de date valide[a]

La valeur de données est une valeur de temps valide[a]

La valeur de données n’est pas une valeur de date,d’heure ou de valeur d’horodatage valide[a]
Données

Données tronquées

Données[f]

Données[g]

Indéfini
16[b]

16[b]

16[b]

16[b]

Indéfini
n/a

01S07

n/a

n/a

22018
Tous les types d’intervalleS C La valeur de données est une valeur d’intervalle valide ; aucune troncation

La valeur de données est une valeur d’intervalle valide ; troncation d’un ou plusieurs champs de fin

Les données sont un intervalle valide ; une précision significative du champ de pointe est perdue

La valeur de données n’est pas une valeur d’intervalle valide
Données

Données tronquées

Indéfini

Indéfini
Longueur des données en octets

Longueur des données en octets

Indéfini

Indéfini
n/a

01S07

22015

22018

[a] La valeur de BufferLength est ignorée pour cette conversion. Le pilote suppose que la taille de *TargetValuePtr est la taille du type de données C.

[b] Il s’agit de la taille du type de données C correspondant.

[c] La partie de temps de la valeur timestamp est tronquée.

[d] La partie date de la valeur timestamp est ignorée.

[e] La partie fractionnaire de secondes de l’horodatage est tronquée.

[f] Les champs d’heure de la structure timestamp sont définis sur zéro.

[g] Les champs de date de la structure timestamp sont définis sur la date actuelle.

Espaces supplémentaires

Les espaces de début et de fin sont ignorés lorsque les données de caractères SQL sont converties en l’un des types suivants :

  • Date
  • numeric
  • time
  • timestamp
  • données interval C