Funzione SQLDataSources

Conformità
Versione introdotta: Conformità agli standard ODBC 1.0: ISO 92

Sommario
SQLDataSources restituisce informazioni su una fonte di dati. Questa funzione è implementata solo dal Driver Manager.

Sintassi

  
SQLRETURN SQLDataSources(  
     SQLHENV          EnvironmentHandle,  
     SQLUSMALLINT     Direction,  
     SQLCHAR *        ServerName,  
     SQLSMALLINT      BufferLength1,  
     SQLSMALLINT *    NameLength1Ptr,  
     SQLCHAR *        Description,  
     SQLSMALLINT      BufferLength2,  
     SQLSMALLINT *    NameLength2Ptr);  

Arguments

EnvironmentHandle
[Input] Controllo ambientale.

Direction
[Input] Determina quale fonte di dati il Driver Manager restituisce informazioni. Può essere:

SQL_FETCH_NEXT (per recuperare il nome della sorgente dati successiva nella lista), SQL_FETCH_FIRST (per recuperare dall'inizio della lista), SQL_FETCH_FIRST_USER (per recuperare il primo DSN utente) o SQL_FETCH_FIRST_SYSTEM (per recuperare il primo DSN di sistema).

Quando Direzione è impostata su SQL_FETCH_FIRST, le chiamate successive a SQLDataSources con Direzione impostata su SQL_FETCH_NEXT restituiscono sia DSN utente che di sistema. Quando Direzione è impostata su SQL_FETCH_FIRST_USER, tutte le chiamate successive a SQLDataSources con Direzione impostata su SQL_FETCH_NEXT restituiscono solo DSN utente. Quando la Direzione è impostata su SQL_FETCH_FIRST_SYSTEM, tutte le chiamate successive a SQLDataSources con Direzione impostata su SQL_FETCH_NEXT restituiscono solo DSN di sistema.

Nome del Server
[Output] Puntatore a un buffer in cui restituire il nome della sorgente dati.

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

BufferLength1
[Input] Lunghezza del buffer *ServerName , in caratteri; questo non deve essere necessario più lungo di SQL_MAX_DSN_LENGTH più il carattere di terminazione nulla.

NomeLunghezza1Ptr
[Output] Puntatore a un buffer in cui restituire il numero totale di caratteri (escluso il carattere di null-termination) disponibili in *ServerName. Se il numero di caratteri disponibili da restituire è maggiore o uguale a BufferLength1, il nome della sorgente dati in *ServerName viene troncato a BufferLength1 meno la lunghezza di un carattere di null-termination.

Description
[Output] Puntatore a un buffer in cui restituire la descrizione del driver associato alla sorgente dati. Ad esempio, dBASE o SQL Server.

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

BufferLength2
[Input] Lunghezza nei caratteri del *Description buffer.

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

Returns

SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_NO_DATA, SQL_ERROR o SQL_INVALID_HANDLE.

Diagnostica

Quando SQLDataSources 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 SQLDataSources e li spiega 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 *ServerName non era abbastanza grande da restituire il nome completo della sorgente dei dati. Perciò, il nome fu troncato. La lunghezza dell'intero nome della sorgente dati viene restituita in *NameLength1Ptr. (La funzione restituisce SQL_SUCCESS_WITH_INFO.

(DM) Il buffer *Description non era abbastanza grande da restituire la descrizione completa del driver. Pertanto, la descrizione è stata troncata. La lunghezza della descrizione della sorgente dati non runcata è restituita in *NameLength2Ptr. (La funzione restituisce SQL_SUCCESS_WITH_INFO.
HY000 Errore generale (DM) Si è verificato un errore per il quale non esisteva uno stato SQL specifico e per il quale non era stato definito uno stato SQLSTATE specifico per l'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.
HY103 Codice di recupero non valido (DM) Il valore specificato per l'argomento Direzione non era uguale a SQL_FETCH_FIRST, SQL_FETCH_FIRST_USER, SQL_FETCH_FIRST_SYSTEM 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

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

Un'applicazione può chiamare SQLDataSources più volte per recuperare tutti i nomi delle sorgenti dati. Il Driver Manager recupera queste informazioni dalle informazioni di sistema. Quando non ci sono più nomi di sorgenti dati, il Driver Manager restituisce SQL_NO_DATA. Se SQLDataSources viene chiamato con SQL_FETCH_NEXT immediatamente dopo aver restituito SQL_NO_DATA, restituirà il primo nome della sorgente dati. Per informazioni su come un'applicazione utilizza le informazioni restituite da SQLDataSources, vedi Scelta di una sorgente o driver di dati.

Se SQL_FETCH_NEXT viene passato a SQLDataSources la prima volta che viene chiamato, restituirà il primo nome della sorgente dati.

Il driver determina come i nomi delle sorgenti dati vengono mappati alle fonti dati reali.

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
Connessione a un'origine dati tramite un stringa di connessione o una finestra di dialogo Funzione SQLDriverConnect
Restituzione di descrizioni e attributi del driver Funzione SQLDrivers