Share via


Conversione di dati da C ai tipi di dati SQL

Quando un'applicazione chiama SQLExecute o SQLExecDirect, il driver recupera i dati per tutti i parametri associati a SQLBindParameter dai percorsi di archiviazione nell'applicazione. Quando un'applicazione chiama SQLSetPos, il driver recupera i dati per un'operazione di aggiornamento o aggiunta da colonne associate a SQLBindCol. Per i parametri di data-at-execution, l'applicazione invia i dati dei parametri con SQLPutData. Se necessario, il driver converte i dati dal tipo di dati specificato dall'argomento ValueType in SQLBindParameter al tipo di dati specificato dall'argomento ParameterType in SQLBindParameter e quindi invia i dati all'origine dati.

Nella tabella seguente vengono illustrate le conversioni supportate dai tipi di dati ODBC C ai tipi di dati ODBC SQL. Un cerchio pieno indica la conversione predefinita per un tipo di dati SQL (il tipo di dati C da cui verranno convertiti i dati quando il valore di ValueType o il campo descrittore SQL_DESC_CONCI edizione Standard_TYPE è SQL_C_DEFAULT). Un cerchio vuoto indica una conversione supportata.

Il formato dei dati convertiti non è interessato dall'impostazione paese o area geografica di Windows.

Supported conversions: ODBC C to SQL data types

Le tabelle nelle sezioni seguenti descrivono come il driver o l'origine dati converte i dati inviati all'origine dati; I driver sono necessari per supportare le conversioni da tutti i tipi di dati ODBC C ai tipi di dati SQL ODBC supportati. Per un determinato tipo di dati ODBC C, la prima colonna della tabella elenca i valori di input legali dell'argomento ParameterType in SQLBindParameter. La seconda colonna elenca i risultati di un test eseguito dal driver per determinare se è in grado di convertire i dati. La terza colonna elenca SQLSTATE restituito per ogni risultato da SQLExecDirect, SQLExecute, SQLBulkOperations, SQLSetPos o SQLPutData. I dati vengono inviati all'origine dati solo se vengono restituiti SQL_SUCCESS.

Se l'argomento ParameterType in SQLBindParameter contiene l'identificatore di un tipo di dati SQL ODBC non visualizzato nella tabella per un determinato tipo di dati C, SQLBindParameter restituisce SQLSTATE 07006 (violazione dell'attributo del tipo di dati con restrizioni). Se l'argomento ParameterType contiene un identificatore specifico del driver e il driver non supporta la conversione dal tipo di dati ODBC C specifico al tipo di dati SQL specifico del driver, SQLBindParameter restituisce SQLSTATE HYC00 (funzionalità facoltativa non implementata).

Se gli argomenti ParameterValuePtr e StrLen_or_IndPtr specificati in SQLBindParameter sono entrambi puntatori Null, tale funzione restituisce SQLSTATE HY009 (uso non valido del puntatore Null). Anche se non viene visualizzato nelle tabelle, un'applicazione imposta il valore del buffer di lunghezza/indicatore a cui punta l'argomento StrLen_or_IndPtr di SQLBindParameter o il valore dell'argomento StrLen_or_IndPtr di SQLPutData per SQL_NULL_DATA per specificare un valore di dati SQL NULL. (L'oggetto StrLen_or_IndPtr argomento corrisponde al campo SQL_DESC_OCTET_LENGTH_PTR della APD. L'applicazione imposta questi valori su SQL_NTS per specificare che il valore in *ParameterValuePtr in SQLBindParameter o *DataPtr in SQLPutData (a cui punta il campo SQL_DESC_DATA_PTR del APD) è una stringa con terminazione Null.

Nelle tabelle vengono usati i termini seguenti:

  • Lunghezza byte dei dati : numero di byte di dati SQL disponibili per l'invio all'origine dati, indipendentemente dal fatto che i dati vengano troncati prima che vengano inviati all'origine dati. Per i dati stringa, questo non include spazio per il carattere di terminazione Null.

  • Lunghezza byte colonna: numero di byte necessari per archiviare i dati nell'origine dati.

  • Lunghezza byte carattere: numero massimo di byte necessari per visualizzare i dati in formato carattere. Questo valore è definito per ogni tipo di dati SQL in Dimensioni di visualizzazione, ad eccezione della lunghezza in byte dei caratteri, mentre le dimensioni della visualizzazione sono in caratteri.

  • Numero di cifre : numero di caratteri usati per rappresentare un numero, inclusi il segno meno, il separatore decimale e l'esponente (se necessario).

  • Parole in
    corsivo : elementi della grammatica SQL. Per la sintassi degli elementi grammaticali, vedere Appendice C: Grammatica SQL.

Questa sezione descrive gli argomenti seguenti: