SQLDataSources-funktion

Överensstämmelse
Version introducerad: ODBC 1.0 Standardefterlevnad: ISO 92

Summary
SQLDataSources returnerar information om en datakälla. Denna funktion implementeras endast av Driver Manager.

Syntax

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

Arguments

EnvironmentHandle
[Input] Miljöhantering.

Riktning
[Input] Avgör vilken datakälla Driver Manager returnerar information om. Kan vara:

SQL_FETCH_NEXT (för att hämta nästa datakälla i listan), SQL_FETCH_FIRST (hämta från början av listan), SQL_FETCH_FIRST_USER (hämta den första användarens DSN) eller SQL_FETCH_FIRST_SYSTEM (för att hämta det första system-DSN).

När Direction är inställt på SQL_FETCH_FIRST returnerar efterföljande anrop till SQLDataSources med Direction satt till SQL_FETCH_NEXT både användar- och system-DSN. När Direction är inställt på SQL_FETCH_FIRST_USER returnerar alla efterföljande anrop till SQLDataSources med Direction satt till SQL_FETCH_NEXT endast användar-DSN. När Direction är inställt på SQL_FETCH_FIRST_SYSTEM returnerar alla efterföljande anrop till SQLDataSources med Direction satt till SQL_FETCH_NEXT endast system-DSN.

ServerName
[Utdata] Peka till en buffert där datakällnamnet ska returneras.

Om ServerName är NULL kommer NameLength1Ptr ändå att returnera det totala antalet tecken (exklusive null-termineringstecken för teckendata) som finns tillgängliga att returnera i bufferten som ServerName pekar på.

BufferLength1
[Input] Längden på *ServerName-bufferten , i tecken; detta behöver inte vara längre än SQL_MAX_DSN_LENGTH plus tecknet null-termination.

NameLength1Ptr
[Utdata] Pekare till en buffert där det totala antalet tecken (exklusive null-termineringstecknet) kan returneras i *ServerName. Om antalet tecken som kan returneras är större än eller lika med BufferLength1, förkortas datakällnamnet i *ServerName till BufferLength1 minus längden på ett null-termineringstecken.

Beskrivning
[Utdata] Peka till en buffert där beskrivningen av drivrutinen kopplad till datakällan ska returneras. Till exempel dBASE eller SQL Server.

Om Beskrivningen är NULL kommer NameLength2Ptr ändå att returnera det totala antalet tecken (exklusive null-termineringstecknet för teckendata) som finns tillgängliga att returnera i bufferten som Beskrivning pekar på.

BufferLength2
[Input] Längd i tecken i *Description-bufferten .

NameLength2Ptr
[Utdata] Pekare till en buffert där det totala antalet tecken (exklusive null-termineringstecknet) kan returneras i *Beskrivning. Om antalet tecken som kan returneras är större än eller lika med BufferLength2, förkortas drivrutinsbeskrivningen i *Description till BufferLength2 minus längden på ett null-termineringstecken.

Returns

SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_NO_DATA, SQL_ERROR eller SQL_INVALID_HANDLE.

Diagnostics

När SQLDataSources returnerar antingen SQL_ERROR eller SQL_SUCCESS_WITH_INFO kan ett associerat SQLSTATE-värde erhållas genom att anropa SQLGetDiagRec med HandleType SQL_HANDLE_ENV och Handle EnvironmentHandle. Följande tabell listar de SQLSTATE-värden som vanligtvis returneras av SQLDataSources och förklarar var och en i kontexten av denna funktion; notationen "(DM)" föregår beskrivningarna av SQLSTATE som returneras av Driver Manager. Returkoden som är associerad med varje SQLSTATE-värde är SQL_ERROR, om inget annat anges.

SQLSTATE Error Description
01000 Allmän varning (DM) Informationsmeddelande specifikt för förarchefen. (Funktionen returnerar SQL_SUCCESS_WITH_INFO.)
01004 Strängdata, höger trunkerade (DM) Bufferten *ServerName var inte tillräckligt stor för att returnera hela datakällsnamnet. Därför förkortades namnet. Längden på hela datakällnamnet anges i *NameLength1Ptr. (Funktionen returnerar SQL_SUCCESS_WITH_INFO.)

(DM) Buffertbeskrivningen *Beskrivningen var inte tillräckligt stor för att returnera hela drivrutinsbeskrivningen. Därför förkortades beskrivningen. Längden på beskrivningen av den otrunkerade datakällan returneras i *NameLength2Ptr. (Funktionen returnerar SQL_SUCCESS_WITH_INFO.)
HY000 Allmänt fel (DM) Ett fel uppstod där det inte fanns något specifikt SQLSTATE och för vilket inget implementationsspecifikt SQLSTATE var definierat. Felmeddelandet som returnerades av SQLGetDiagRec i *MessageText-bufferten beskriver felet och dess orsak.
HY001 Fel vid minnesallokering (DM) Driver Manager kunde inte allokera minne som krävs för att stödja exekvering eller slutförande av funktionen.
HY010 Funktionssekvensfel (DM) SQLExecute, SQLExecDirect eller SQLMoreResults anropades för StatementHandle och returnerades SQL_PARAM_DATA_AVAILABLE. Den här funktionen anropades innan data hämtades för alla strömmade parametrar.
HY013 Minneshanteringsfel Det gick inte att bearbeta funktionsanropet eftersom det inte gick att komma åt underliggande minnesobjekt, möjligen på grund av minnesbrist.
HY090 Ogiltig sträng- eller buffertlängd (DM) Värdet som specificerades för argument BufferLength1 var mindre än 0.

(DM) Värdet som angavs för argumentet BufferLength2 var mindre än 0.
HY103 Ogiltig återvinningskod (DM) Värdet som anges för argumentet Riktning var inte lika med SQL_FETCH_FIRST, SQL_FETCH_FIRST_USER, SQL_FETCH_FIRST_SYSTEM eller SQL_FETCH_NEXT.
HY117 Anslutningen pausas på grund av okänt transaktionstillstånd. Endast frånkopplings- och skrivskyddade funktioner tillåts. (DM) Mer information om pausat tillstånd finns i SQLEndTran-funktion.

Comments

Eftersom SQLDataSources är implementerat i Driver Manager stöds det för alla drivrutiner oavsett om en viss drivrutin uppfyller standarderna.

En applikation kan anropa SQLDataSources flera gånger för att hämta alla namn på datakällor. Driver Manager hämtar denna information från systeminformationen. När det inte finns några fler namn på datakällor returnerar Driver Manager SQL_NO_DATA. Om SQLDataSources anropas med SQL_FETCH_NEXT omedelbart efter att SQL_NO_DATA returnerats, kommer det att returnera det första datakällnamnet. För information om hur en applikation använder informationen som returneras av SQLDataSources, se Välj en datakälla eller drivrutin.

Om SQL_FETCH_NEXT skickas till SQLDataSources första gången den anropas, returneras det första datakällsnamnet.

Drivrutinen avgör hur datakällsnamn mappas till faktiska datakällor.

Mer information om Se
Att upptäcka och lista värden som krävs för att ansluta till en datakälla SQLBrowseConnect-funktionen
Ansluta till en datakälla SQLConnect-funktion
Anslutning till en datakälla via en reťazec pripojenia eller dialogruta SQLDriverConnect-funktion
Returnerande förarbeskrivningar och attribut SQLDrivers-funktionen