Condividi tramite


Mapping di funzioni in Gestione driver

Gestione driver supporta due punti di ingresso per le funzioni che accettano argomenti stringa. La funzione non decorata (SQLDriverConnect) è la forma ANSI della funzione. Il modulo Unicode è decorato con W (SQLDriverConnectW).

Il file di intestazione ODBC supporta anche le funzioni decorate con A (SQLDriverConnectA) per la comodità delle applicazioni ANSI/Unicode miste. Le chiamate effettuate alle funzioni A sono in realtà chiamate al punto di ingresso non dichiarato (SQLDriverConnect).

Se l'applicazione viene compilata con _UNICODE #define, il file di intestazione ODBC eseguirà il mapping delle chiamate di funzione non decorate (SQLDriverConnect) alla versione Unicode (SQLDriver ConnectW).

Gestione driver riconosce un driver come driver Unicode se SQL ConnectW è supportato dal driver.

Se il driver è un driver Unicode, Gestione driver effettua chiamate di funzione come indicato di seguito:

  • Passa una funzione senza argomenti stringa o parametri direttamente attraverso il driver.

  • Passa le funzioni Unicode (con il suffisso W ) direttamente al driver.

  • Converte una funzione ANSI (con il suffisso A ) in una funzione Unicode (con il suffisso W ) convertendo gli argomenti stringa in caratteri Unicode e passando la funzione Unicode al driver.

Se il driver è un driver ANSI, Gestione driver effettua chiamate di funzione come indicato di seguito:

  • Passa le funzioni senza argomenti stringa o parametri direttamente attraverso il driver.

  • Converte le funzioni Unicode (con il suffisso W ) in una chiamata di funzione ANSI e la passa al driver.

  • Passa una funzione ANSI direttamente al driver.

Gestione driver è abilitato internamente per Unicode. Di conseguenza, le prestazioni ottimali vengono ottenute da un'applicazione Unicode che utilizza un driver Unicode, perché Gestione driver passa semplicemente le funzioni Unicode al driver. Quando un'applicazione ANSI usa un driver ANSI, Gestione driver deve convertire le stringhe da ANSI a Unicode durante l'elaborazione di alcune funzioni, ad esempio SQLDriverConnect. Dopo l'elaborazione della funzione, Gestione driver deve quindi convertire nuovamente la stringa Unicode in ANSI prima di inviare la funzione al driver ANSI.

Un'applicazione non dovrebbe modificare o leggere i buffer dei parametri associati quando il driver restituisce SQL_STILL_EXECUTING o SQL_NEED_DATA. Gestione driver lascia i buffer associati ad ANSI fino a quando il driver non restituisce SQL_SUCCESS, SQL_SUCCESS_WITH_INFO o SQL_ERROR. Un'applicazione multithreading non deve ottenere l'accesso a valori di parametro associati su cui un altro thread esegue un'istruzione SQL. Gestione driver converte i dati da Unicode a ANSI "sul posto" e l'altro thread potrebbe visualizzare i dati ANSI in questi buffer mentre il driver sta ancora elaborando l'istruzione SQL. Le applicazioni che associano dati Unicode a un driver ANSI non devono associare due colonne diverse allo stesso indirizzo.