Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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.
Verwandte Funktionen
| 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 |