Condividi tramite


Funzione SQLDriverToDataSource

SQLDriverToDataSource supporta le traduzioni per i driver ODBC. Questa funzione non viene chiamata dalle applicazioni abilitate per ODBC; le applicazioni richiedono la traduzione tramite SQLSetConnectAttr. Il driver associato a ConnectionHandle specificato in SQLSetConnectAttr chiama la DLL specificata per eseguire le traduzioni di tutti i dati trasmessi dal driver all'origine dati. È possibile specificare una DLL di conversione predefinita nel file di inizializzazione ODBC.

Sintassi

  
BOOL SQLDriverToDataSource(  
     UDWORD     fOption,  
     SWORD      fSqlType,  
     PTR        rgbValueIn,  
     SDWORD     cbValueIn,  
     PTR        rgbValueOut,  
     SDWORD     cbValueOutMax,  
     SDWORD *   pcbValueOut,  
     UCHAR *    szErrorMsg,  
     SWORD      cbErrorMsgMax,  
     SWORD *    pcbErrorMsg);  

Argomenti

fOption
[Input] Valore dell'opzione.

fSqlType
[Input] Tipo di dati SQL ODBC. Questo argomento indica al driver come convertire rgbValueIn in un formato accettabile dall'origine dati. Per un elenco dei tipi di dati SQL validi, vedere Tipi di dati SQL.

rgbValueIn
[Input] Valore da tradurre.

cbValueIn
[Input] Lunghezza di rgbValueIn.

rgbValueOut
[Output] Risultato della traduzione.

Nota

La DLL di traduzione non termina questo valore.

cbValueOutMax
[Input] Lunghezza di rgbValueOut.

pcbValueOut
[Output] Numero totale di byte (escluso il byte di terminazione Null) disponibile per la restituzione in rgbValueOut.

Per i dati di tipo carattere o binario, se questo valore è maggiore o uguale a cbValueOutMax, i dati in rgbValueOut vengono troncati in byte cbValueOutMax .

Per tutti gli altri tipi di dati, il valore di cbValueOutMax viene ignorato e la DLL di conversione presuppone che le dimensioni di rgbValueOut siano le dimensioni del tipo di dati C predefinito del tipo di dati SQL specificato con fSqlType.

L'argomento pcbValueOut può essere un puntatore Null.

Szerrormsg
[Output] Puntatore all'archiviazione per un messaggio di errore. Si tratta di una stringa vuota a meno che la traduzione non sia riuscita.

cbErrorMsgMax
[Input] Lunghezza di szErrorMsg.

pcbErrorMsg
[Output] Puntatore al numero totale di byte (escluso il byte di terminazione Null) disponibile per la restituzione in szErrorMsg. Se è maggiore o uguale a cbErrorMsg, i dati in szErrorMsg vengono troncati a cbErrorMsgMax meno il carattere di terminazione Null. L'argomento pcbErrorMsg può essere un puntatore Null.

Resi

TRUE se la traduzione ha esito positivo, FALSE se la traduzione non è riuscita.

Commenti

Il driver chiama SQLDriverToDataSource per convertire tutti i dati (istruzioni SQL, parametri e così via) passando dal driver all'origine dati. La DLL di traduzione potrebbe non tradurre alcuni dati, a seconda del tipo di dati e dello scopo della DLL di traduzione. Ad esempio, una DLL che converte i dati di tipo carattere da una tabella codici a un'altra ignora tutti i dati numerici e binari.

Il valore di fOption viene impostato sul valore di vParam specificato chiamando SQLSetConnectAttr con l'attributo SQL_ATTR_TRANSLATE_OPTION. Si tratta di un valore a 32 bit che ha un significato specifico per una determinata DLL di traduzione. Ad esempio, potrebbe specificare una determinata traduzione del set di caratteri.

Se lo stesso buffer viene specificato per rgbValueIn e rgbValueOut, la conversione dei dati nel buffer verrà eseguita sul posto.

Anche se cbValueIn, cbValueOutMax e pcbValueOut sono di tipo SDWORD, SQLDriverToDataSource non supporta necessariamente puntatori enormi.

Se SQLDriverToDataSource restituisce FALSE, è possibile che si sia verificato un troncamento dei dati durante la traduzione. Se pcbValueOut (il numero di byte disponibili per la restituzione nel buffer di output) è maggiore di cbValueOutMax (la lunghezza del buffer di output), si è verificato il troncamento. Il driver deve determinare se il troncamento è accettabile o meno. Se il troncamento non si è verificato, SQLDriverToDataSource ha restituito FALSE a causa di un altro errore. In entrambi i casi, viene restituito un messaggio di errore specifico in szErrorMsg.

Per altre informazioni sulla conversione dei dati, vedere DLL di traduzione.

Per informazioni su Vedere
Conversione dei dati restituiti dall'origine dati SQLDataSourceToDriver
Restituzione dell'impostazione di un attributo di connessione SQLGetConnectAttr
Impostazione di un attributo di connessione SQLSetConnectAttr