Condividi tramite


Funzione SQLDataSourceToDriver

SQLDataSourceToDriver supporta letranslation 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 traduzioni di tutti i dati trasmessi dall'origine dati al driver. È possibile specificare una DLL di conversione predefinita nel file di inizializzazione ODBC.

Sintassi

  
BOOL SQLDataSourceToDriver(  
     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. Questo argomento indica al driver come convertire rgbValueIn in un formato accettabile dall'applicazione. Per un elenco dei tipi di dati SQL validi, vedere la sezione Tipi di dati SQL nell'Appendice D: Tipi di dati.

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 SQLDataSourceToDriver per convertire alldata (dati del set di risultati, nomi di tabella, conteggi di righe, messaggi di errore e così via) passando dall'origine dati al driver. 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, SQLDataSourceToDriver non supporta necessariamente puntatori enormi.

Se SQLDataSourceToDriver restituisce FALSE, è possibile che si sia verificato un troncamento dei dati durante la conversione. 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. Se il troncamento non si è verificato, SQLDataSourceToDriver 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 inviati all'origine dati SQLDriverToDataSource
Restituzione dell'impostazione di un attributo di connessione SQLGetConnectAttr
Impostazione di un attributo di connessione SQLSetConnectAttr