Funzione SQLDrivers

Conformità
Versione introdotta: Conformità agli standard ODBC 2.0: ODBC

Sommario
SQLDrivers elenca le descrizioni dei driver e le parole chiave degli attributi dei driver. Questa funzione è implementata solo dal Driver Manager.

Sintassi

  
SQLRETURN SQLDrivers(  
     SQLHENV         EnvironmentHandle,  
     SQLUSMALLINT    Direction,  
     SQLCHAR *       DriverDescription,  
     SQLSMALLINT     BufferLength1,  
     SQLSMALLINT *   DescriptionLengthPtr,  
     SQLCHAR *       DriverAttributes,  
     SQLSMALLINT     BufferLength2,  
     SQLSMALLINT *   AttributesLengthPtr);  

Arguments

EnvironmentHandle
[Input] Controllo ambientale.

Direction
[Input] Determina se il Driver Manager recupera la prossima descrizione del driver nella lista (SQL_FETCH_NEXT) o se la ricerca inizia dall'inizio della lista (SQL_FETCH_FIRST).

DriverDescription
[Output] Puntatore a un buffer in cui restituire la descrizione del driver.

Se DriverDescription è NULL, DescriptionLengthPtr restituirà comunque il numero totale di caratteri (escluso il carattere di null-termination per i dati caratteri) disponibili da restituire nel buffer indicato da DriverDescription.

BufferLength1
[Input] Lunghezza del buffer *DriverDescription , in caratteri.

DescrizioneLunghezzaPtr
[Output] Puntatore a un buffer in cui restituire il numero totale di caratteri (escluso il carattere di terminazione nulla) disponibili da restituire in *DriverDescription. Se il numero di caratteri disponibili da restituire è maggiore o uguale a BufferLength1, la descrizione del driver in *DriverDescription viene troncata a BufferLength1 meno la lunghezza di un carattere di null-termination.

Attributi del pilota
[Output] Puntatore a un buffer in cui restituire l'elenco delle coppie di valori attributi driver (vedi "Commenti").

Se DriverAttributes è NULL, AttributesLengthPtr restituirà comunque il numero totale di byte (escluso il carattere di null-termination per i dati del carattere) disponibili da restituire nel buffer indicato da DriverAttributes.

BufferLength2
[Input] Lunghezza del buffer *DriverAttributs , in caratteri. Se il valore *DriverDescription è una stringa Unicode (quando si chiama SQLDriversW), l'argomento BufferLength deve essere un numero pari.

AttributiLunghezzaPtr
[Output] Puntatore a un buffer in cui restituire il numero totale di byte (escluso il byte di terminazione nulla) disponibili da restituire in *DriverAttributes. Se il numero di byte disponibili da restituire è maggiore o uguale a BufferLength2, l'elenco delle coppie di valori attributi in *DriverAttributes viene troncato a BufferLength2 meno la lunghezza del carattere di null-termination.

Returns

SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_NO_DATA, SQL_ERROR o SQL_INVALID_HANDLE.

Diagnostica

Quando SQLDrivers restituisce SQL_ERROR o SQL_SUCCESS_WITH_INFO, si può ottenere un valore SQLSTATE associato chiamando SQLGetDiagRec con un HandleType di SQL_HANDLE_ENV e un Handle di EnvironmentHandle. La tabella seguente elenca i valori SQLSTATE tipicamente restituiti da SQLDrivers e spiega ciascuno nel contesto di questa funzione; la notazione "(DM)" precede le descrizioni degli stati SQL restituite dal Driver Manager. Il codice restituito associato a ogni valore SQLSTATE è SQL_ERROR, a meno che non sia specificato diversamente.

SQLSTATE Error Description
01000 Avviso generale (DM) Messaggio informativo specifico per il Driver Manager. (La funzione restituisce SQL_SUCCESS_WITH_INFO.
01004 Dati stringa, troncati a destra (DM) Il buffer *DriverDescription non era abbastanza grande da restituire la descrizione completa del driver. Pertanto, la descrizione è stata troncata. La lunghezza della descrizione completa del driver è restituita in *DescriptionLengthPtr. (La funzione restituisce SQL_SUCCESS_WITH_INFO.

(DM) Il buffer *DriverAttributes non era abbastanza grande da restituire l'elenco completo delle coppie di valori attributi. Pertanto, la lista fu ridotta in modo accorciato. La lunghezza dell'elenco non runcato delle coppie di valori attributi viene restituita in *AttributesLengthPtr. (La funzione restituisce SQL_SUCCESS_WITH_INFO.
HY000 Errore generale Si è verificato un errore per il quale non è stato specificato SQLSTATE e per il quale non è stato definito alcun SQLSTATE specifico dell'implementazione. Il messaggio di errore restituito da SQLGetDiagRec nel buffer *MessageText descrive l'errore e la relativa causa.
HY001 Errore di allocazione della memoria (DM) Il Driver Manager non è riuscito ad allocare la memoria necessaria a supportare l'esecuzione o il completamento della funzione.
HY010 Errore della sequenza di funzioni (DM) SQLExecute, SQLExecDirect o SQLMoreResults è stato chiamato per StatementHandle e restituito SQL_PARAM_DATA_AVAILABLE. Questa funzione è stata chiamata prima del recupero dei dati per tutti i parametri trasmessi.
HY013 Errore di gestione della memoria Impossibile elaborare la chiamata di funzione perché non è stato possibile accedere agli oggetti di memoria sottostanti, probabilmente a causa di condizioni di memoria insufficiente.
HY090 Lunghezza della stringa o del buffer non valida (DM) Il valore specificato per l'argomento BufferLength1 era inferiore a 0.

(DM) Il valore specificato per l'argomento BufferLength2 era inferiore a 0 o uguale a 1.
HY103 Codice di recupero non valido (DM) Il valore specificato per l'argomento Direzione non era uguale a SQL_FETCH_FIRST o SQL_FETCH_NEXT.
HY117 La connessione viene sospesa a causa dello stato sconosciuto della transazione. Sono consentite solo funzioni disconnesse e di sola lettura. (DM) Per altre informazioni sullo stato sospeso, vedere Funzione SQLEndTran.

Comments

SQLDrivers restituisce la descrizione del driver nel buffer *DriverDescription . Restituisce informazioni aggiuntive sul driver nel buffer *DriverAttributes come elenco di coppie parola chiave-valore. Tutte le parole chiave elencate nelle informazioni di sistema per i driver verranno restituite per tutti i driver, tranne CreateDSN, che viene utilizzato per stimolare la creazione di fonti dati ed è quindi opzionale. Ogni coppia termina con un byte nullo, e la lista completa termina con un byte nullo (cioè, due byte nulli segnano la fine della lista). Ad esempio, un driver basato su file che utilizza la sintassi C potrebbe restituire il seguente elenco di attributi ("\0" rappresenta un carattere nullo):

FileUsage=1\0FileExtns=*.dbf\0\0  

Se *DriverAttributes non è abbastanza grande da contenere l'intera lista, la lista viene troncata, SQLDrivers restituisce SQLSTATE 01004 (Dati troncati) e la lunghezza della lista (escludendo l'ultimo byte di terminazione nulla) viene restituita in *AttributesLengthPtr.

Le parole chiave degli attributi del driver vengono aggiunte dalle informazioni di sistema quando il driver viene installato. Per maggiori informazioni, vedi Installazione di componenti ODBC.

Un'applicazione può chiamare SQLDrivers più volte per recuperare tutte le descrizioni dei driver. Il Driver Manager recupera queste informazioni dalle informazioni di sistema. Quando non ci sono più descrizioni dei driver, SQLDrivers restituisce SQL_NO_DATA. Se SQLDrivers viene chiamato con SQL_FETCH_NEXT immediatamente dopo aver restituito SQL_NO_DATA, restituisce la prima descrizione del driver. Per informazioni su come un'applicazione utilizza le informazioni restituite da SQLDrivers, vedi Scelta di una sorgente o driver dati.

Se SQL_FETCH_NEXT viene passato a SQLDrivers la primissima volta che viene chiamato, SQLDrivers restituisce il primo nome della sorgente dati.

Poiché SQLDrivers è implementato nel Driver Manager, è supportato per tutti i driver indipendentemente dalla conformità agli standard di un determinato driver.

Per informazioni su Vedi
Scoprire e elencare i valori necessari per connettersi a una sorgente di dati Funzione SQLBrowseConnect
Connessione a un'origine dati Funzione SQLConnect
Ritorno dei nomi delle sorgenti dati Funzione SQLDataSources
Connessione a un'origine dati tramite un stringa di connessione o una finestra di dialogo Funzione SQLDriverConnect