SQLDataSources-Funktion

Konformität
Version eingeführt: ODBC 1.0 Standards Compliance: ISO 92

Summary
SQLDataSources liefert Informationen über eine Datenquelle. Diese Funktion wird nur vom Driver Manager implementiert.

Syntax

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

Argumente

EnvironmentHandle
[Eingabe] Umwelt-Kontrolle.

Direction
[Eingabe] Bestimmt, über welche Datenquelle der Treibermanager Informationen zurückgibt. Dies kann folgendes sein:

SQL_FETCH_NEXT (um den nächsten Datenquellennamen in der Liste abzurufen), SQL_FETCH_FIRST (um von Anfang der Liste abzurufen), SQL_FETCH_FIRST_USER (um das DSN des ersten Benutzers abzurufen) oder SQL_FETCH_FIRST_SYSTEM (um das erste System-DSN abzurufen).

Wenn Direction auf SQL_FETCH_FIRST gesetzt ist, geben nachfolgende Aufrufe von SQLDataSources mit Direction auf SQL_FETCH_NEXT sowohl Benutzer- als auch System-DSNs zurück. Wenn Direction auf SQL_FETCH_FIRST_USER gesetzt ist, geben alle nachfolgenden Aufrufe von SQLDataSources mit Direction auf SQL_FETCH_NEXT nur Benutzer-DSNs zurück. Wenn Direction auf SQL_FETCH_FIRST_SYSTEM gesetzt ist, geben alle nachfolgenden Aufrufe von SQLDataSources mit Direction auf SQL_FETCH_NEXT nur System-DSNs zurück.

ServerName
[Ausgabe] Zeiger auf einen Puffer, in dem der Name der Datenquelle zurückgegeben werden kann.

Wenn ServerName NULL ist, gibt NameLength1Ptr weiterhin die Gesamtzahl der Zeichen zurück (ohne das Null-Terminationszeichen für Zeichendaten), die im von ServerName gezeigten Puffer zurückgegeben werden können.

BufferLength1
[Eingabe] Länge des *ServerName-Puffers , in Zeichen; dies muss nicht länger als SQL_MAX_DSN_LENGTH plus das Null-Terminationszeichen sein.

NameLength1Ptr
[Ausgabe] Zeiger auf einen Puffer, in dem die Gesamtzahl der Zeichen (ohne das Null-Terminationszeichen) zurückgegeben werden kann, die in *ServerName zurückgegeben werden können. Wenn die Anzahl der zurückgegebenen Zeichen größer oder gleich BufferLength1 ist, wird der Name der Datenquelle in *ServerName auf BufferLength1 minus die Länge eines Null-Terminationszeichens abgekürzt.

Beschreibung
[Ausgabe] Zeiger auf einen Puffer, in dem die Beschreibung des mit der Datenquelle verbundenen Treibers zurückgegeben wird. Zum Beispiel dBASE oder SQL Server.

Wenn die Beschreibung NULL ist, gibt NameLength2Ptr weiterhin die Gesamtzahl der Zeichen zurück (ohne das Null-Terminationszeichen für Zeichendaten), die im von der Beschreibung gezeigten Puffer zurückgegeben werden können.

BufferLength2
[Eingabe] Länge in den Zeichen des *Description-Puffers .

NameLength2Ptr
[Ausgabe] Zeiger auf einen Puffer, in dem die Gesamtzahl der Zeichen (ohne das Null-Terminationszeichen) zurückgegeben werden kann, die in *Beschreibung zurückgegeben werden können. Wenn die Anzahl der zurückgegebenen Zeichen größer oder gleich BufferLength2 ist, wird die Treiberbeschreibung in *Description auf BufferLength2 minus die Länge eines Null-Terminationszeichens abgeschnitten.

Rücklieferungen

SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_NO_DATA, SQL_ERROR oder SQL_INVALID_HANDLE.

Diagnostics

Wenn SQLDataSources entweder SQL_ERROR oder SQL_SUCCESS_WITH_INFO zurückgibt, kann ein zugehöriger SQLSTATE-Wert erhalten werden, indem SQLGetDiagRec mit einem HandleType von SQL_HANDLE_ENV und einem Handle von EnvironmentHandle aufgerufen wird. Die folgende Tabelle listet die typischerweise von SQLDataSources zurückgegebenen SQL-State-Werte auf und erklärt jeden einzelnen im Kontext dieser Funktion; die Notation "(DM)" geht den vom Treibermanager zurückgegebenen SQLSTATE-Beschreibungen voraus. Der rückgabecode, der jedem SQLSTATE-Wert zugeordnet ist, ist SQL_ERROR, sofern nicht anders angegeben.

SQLSTATE Fehler Description
01000 Allgemeiner Warnhinweis (DM) Führermanager-spezifische Informationsnachricht. (Funktion gibt SQL_SUCCESS_WITH_INFO zurück.)
01004 Zeichenfolgendaten, rechts abgeschnitten (DM) Der Puffer *ServerName war nicht groß genug, um den vollständigen Datenquellennamen zurückzugeben. Daher wurde der Name verkürzt. Die Länge des gesamten Datenquellennamens wird in *NameLength1Ptr angegeben. (Funktion gibt SQL_SUCCESS_WITH_INFO zurück.)

(DM) Die Puffer -*Beschreibung war nicht groß genug, um die vollständige Treiberbeschreibung zurückzugeben. Daher wurde die Beschreibung gekürzt. Die Länge der untrunkierten Datenquellenbeschreibung wird in *NameLength2Ptr angegeben. (Funktion gibt SQL_SUCCESS_WITH_INFO zurück.)
HY000 Allgemeiner Fehler (DM) Es trat ein Fehler auf, für den kein spezifischer SQLSTATE existierte und für den kein implementierungsspezifischer SQLSTATE definiert war. Die von SQLGetDiagRec im *MessageText-Puffer zurückgegebene Fehlermeldung beschreibt den Fehler und dessen Ursache.
HY001 Speicherzuweisungsfehler (DM) Der Driver Manager konnte keinen Speicher zuweisen, der zur Unterstützung der Ausführung oder Abschluss der Funktion erforderlich ist.
HY010 Funktionssequenzfehler (DM) SQLExecute, SQLExecDirect oder SQLMoreResults wurde für " StatementHandle " aufgerufen und SQL_PARAM_DATA_AVAILABLE zurückgegeben. Diese Funktion wurde aufgerufen, bevor Daten für alle gestreamten Parameter abgerufen wurden.
HY013 Speicherverwaltungsfehler Der Funktionsaufruf konnte nicht verarbeitet werden, da auf die zugrunde liegenden Speicherobjekte nicht zugegriffen werden konnte, möglicherweise aufgrund geringer Arbeitsspeicherbedingungen.
HY090 Ungültige Zeichenfolgen- oder Pufferlänge (DM) Der für das Argument BufferLength1 angegebene Wert war kleiner als 0.

(DM) Der für das Argument BufferLength2 angegebene Wert war kleiner als 0.
HY103 Ungültiger Abrufcode (DM) Der für das Argument Direction angegebene Wert war nicht gleich SQL_FETCH_FIRST, SQL_FETCH_FIRST_USER, SQL_FETCH_FIRST_SYSTEM oder SQL_FETCH_NEXT.
HY117 Die Verbindung wird aufgrund des unbekannten Transaktionsstatus angehalten. Es sind nur Trenn- und schreibgeschützte Funktionen zulässig. (DM) Weitere Informationen zum angehaltenen Zustand finden Sie unter SQLEndTran Function.

Kommentare

Da SQLDataSources im Driver Manager implementiert ist, wird es für alle Treiber unterstützt, unabhängig davon, ob ein bestimmter Treiber den Standards entspricht.

Eine Anwendung kann SQLDataSources mehrfach aufrufen, um alle Datenquellennamen abzurufen. Der Driver Manager holt diese Informationen aus den Systeminformationen ab. Wenn keine Datenquellennamen mehr vorhanden sind, gibt der Driver Manager SQL_NO_DATA zurück. Wenn SQLDataSources unmittelbar nach der Rückgabe SQL_NO_DATA mit SQL_FETCH_NEXT aufgerufen wird, wird der erste Name der Datenquelle zurückgegeben. Für Informationen darüber, wie eine Anwendung die von SQLDataSources zurückgegebenen Informationen verwendet, siehe Wahl einer Datenquelle oder eines Treibers.

Wenn SQL_FETCH_NEXT beim allerersten Aufruf an SQLDataSources übergeben wird, wird der erste Name der Datenquelle zurückgegeben.

Der Treiber bestimmt, wie Datenquellennamen auf tatsächliche Datenquellen abgebildet werden.

Weitere Informationen zu Siehe
Entdeckung und Auflistung von Werten, die für eine Verbindung zu einer Datenquelle erforderlich sind, SQLBrowseConnect-Funktion
Herstellen einer Verbindung mit einer Datenquelle SQLConnect-Funktion
Herstellen einer Verbindung mit einer Datenquelle mithilfe eines Verbindungszeichenfolge oder Dialogfelds SQLDriverConnect-Funktion
Zurückgeben von Treiberbeschreibungen und Attributen SQLDrivers-Funktion