Condividi tramite


Da SQL a C: carattere

Gli identificatori per i tipi di dati ODBC SQL carattere sono i seguenti:

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

Nella tabella seguente vengono illustrati i tipi di dati ODBC C in cui è possibile convertire i dati SQL di tipo carattere. Per una spiegazione delle colonne e dei termini nella tabella, vedere Conversione di dati da SQL a tipi di dati C.

Identificatore del tipo C Test TargetValuePtr StrLen_or_IndPtr SQLSTATE
SQL_C_CHAR Lunghezza byte dei dati <BufferLength

Lunghezza byte dei dati >= BufferLength
Dati

Dati troncati
Lunghezza dei dati in byte

Lunghezza dei dati in byte
N/D

01004
SQL_C_WCHAR Lunghezza carattere dei dati <BufferLength

Lunghezza carattere dei dati >= BufferLength
Dati

Dati troncati
Lunghezza dei dati in caratteri

Lunghezza dei dati in caratteri
N/D

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 Dati convertiti senza troncamento[b]

Dati convertiti con troncamento di cifre frazionarie[a]

La conversione dei dati comporta la perdita di cifre intere (anziché frazionarie) [a]

I dati non sono un valore letterale numerico[b]
Dati

Dati troncati

Non definito

Non definito
Numero di byte del tipo di dati C

Numero di byte del tipo di dati C

Non definito

Non definito
N/D

01S07

22003

22018
SQL_C_FLOAT SQL_C_DOUBLE I dati si trovano all'interno dell'intervallo del tipo di dati in cui viene convertito il numero[a]

I dati non rientrano nell'intervallo del tipo di dati in cui viene convertito il numero[a]

I dati non sono un valore letterale numerico[b]
Dati

Non definito

Non definito
Dimensioni del tipo di dati C

Non definito

Non definito
N/D

22003

22018
SQL_C_BIT I dati sono 0 o 1

I dati sono maggiori di 0, minori di 2 e non uguali a 1

I dati sono minori di 0 o maggiori o uguali a 2

I dati non sono un valore letterale numerico
Dati

Dati troncati

Non definito

Non definito
1[b]

1[b]

Non definito

Non definito
N/D

01S07

22003

22018
SQL_C_BINARY Lunghezza byte dei dati <= BufferLength

Lunghezza byte dei dati >BufferLength
Dati

Dati troncati
Lunghezza dei dati in byte

Lunghezza dei dati
N/D

01004
SQL_C_TYPE_DATE Il valore dei dati è un valore di data valido[a]

Il valore dei dati è un valore timestamp valido; la parte temporale è zero[a]

Il valore dei dati è un valore timestamp valido; la parte temporale è diversa da zero[a],[c]

Il valore dei dati non è un valore di data o un valore timestamp valido[a]
Dati

Dati

Dati troncati

Non definito
6[b]

6[b]

6[b]

Non definito
N/D

N/D

01S07

22018
SQL_C_TYPE_TIME Il valore dei dati è un valore di tempo valido e il valore dei secondi frazionari è 0[a]

Il valore dei dati è un valore timestamp valido o un valore di tempo valido. La parte dei secondi frazionari è zero[a],[d]

Il valore dei dati è un valore timestamp valido. La parte dei secondi frazionari è diversa da zero[a],[d],[e]

Il valore dei dati non è un valore di ora o un valore timestamp valido[a]
Dati

Dati

Dati troncati

Non definito
6[b]

6[b]

6[b]

Non definito
N/D

N/D

01S07

22018
SQL_C_TYPE_TIMESTAMP Il valore dei dati è un valore timestamp valido o un valore di tempo valido; la parte dei secondi frazionari non viene troncata[a]

Il valore dei dati è un valore timestamp valido o un valore di tempo valido; parte dei secondi frazionari troncata[a]

Il valore dei dati è un valore di data valido[a]

Il valore dei dati è un valore di ora valido[a]

Il valore dei dati non è un valore di data, un valore di ora o un valore timestamp valido[a]
Dati

Dati troncati

Dati[f]

Dati[g]

Non definito
16[b]

16[b]

16[b]

16[b]

Non definito
N/D

01S07

N/D

N/D

22018
Tutti i tipi di intervallo C Il valore dei dati è un valore di intervallo valido; nessun troncamento

Il valore dei dati è un valore di intervallo valido; troncamento di uno o più campi finali

I dati sono un intervallo valido; precisione significativa del campo iniziale persa

Il valore dei dati non è un valore di intervallo valido
Dati

Dati troncati

Non definito

Non definito
Lunghezza dei dati in byte

Lunghezza dei dati in byte

Non definito

Non definito
N/D

01S07

22015

22018

[a] Il valore di BufferLength viene ignorato per questa conversione. Il driver presuppone che le dimensioni di *TargetValuePtr siano le dimensioni del tipo di dati C.

[b] Questa è la dimensione del tipo di dati C corrispondente.

[c] La parte temporale del valore timestamp viene troncata.

[d] La parte relativa alla data del valore timestamp viene ignorata.

[e] La parte dei secondi frazionari del timestamp viene troncata.

[f] I campi dell'ora della struttura timestamp sono impostati su zero.

[g] I campi data della struttura timestamp vengono impostati sulla data corrente.

Spazi aggiuntivi

Gli spazi iniziali e finali vengono ignorati quando i dati di tipo carattere SQL vengono convertiti in uno dei tipi seguenti:

  • date
  • numeric
  • time
  • timestamp
  • dati interval C