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
Eingeführte Version: ODBC 3.0 Normenkonformität: ISO 92
Summary
SQLGetConnectAttr gibt die aktuelle Einstellung eines Verbindungsattributs zurück.
Note
Für weitere Informationen darüber, worauf der Treiber-Manager diese Funktion zuordnet, wenn eine ODBC 3*.x*-Anwendung mit einem ODBC 2*.x*-Treiber arbeitet, siehe Abbildung von Ersatzfunktionen für Abwärtskompatibilität von Anwendungen.
Syntax
SQLRETURN SQLGetConnectAttr(
SQLHDBC ConnectionHandle,
SQLINTEGER Attribute,
SQLPOINTER ValuePtr,
SQLINTEGER BufferLength,
SQLINTEGER * StringLengthPtr);
Argumente
ConnectionHandle
[Eingabe] Verbindungshandle.
Attribut
[Eingabe] Attribut zum Abrufen.
ValuePtr
[Ausgabe] Ein Zeiger auf den Speicher, in dem der aktuelle Wert des von Attribut angegebenen Attributs zurückgegeben werden kann. Für ganzzahlige Attribute schreiben manche Treiber nur die unteren 32-Bit- oder 16-Bit-Elemente eines Puffers und lassen das höherwertige Bit unverändert. Daher sollten Anwendungen einen SQLULEN-Puffer verwenden und den Wert vor dem Aufruf dieser Funktion auf 0 initialisieren.
Wenn ValuePtr NULL ist, gibt StringLengthPtr weiterhin die Gesamtzahl der Bytes zurück (ohne das Null-Terminationszeichen für Zeichendaten), die im von ValuePtr gezeigten Puffer zurückgegeben werden können.
BufferLength
[Eingabe] Wenn attribut ein ODBC-definiertes Attribut ist und ValuePtr auf eine Zeichenfolge oder einen binären Puffer zeigt, sollte dieses Argument die Länge von *ValuePtr sein. Wenn Attribute ein ODBC-definiertes Attribut ist und *ValuePtr eine ganze Zahl, wird BufferLength ignoriert. Wenn der Wert in *ValuePtr eine Unicode-Zeichenkette ist (beim Aufruf von SQLGetConnectAttrW), muss das BufferLength-Argument eine gerade Zahl sein.
Wenn Attribute ein treiberdefiniertes Attribut ist, teilt die Anwendung die Natur des Attributs dem Driver Manager an, indem sie das BufferLength-Argument setzt. BufferLength kann folgende Werte haben:
Wenn *ValuePtr ein Zeiger auf eine Zeichenkette ist, ist BufferLength die Länge der Zeichenkette.
Wenn *ValuePtr ein Zeiger auf einen binären Puffer ist, platziert die Anwendung das Ergebnis des Makros SQL_LEN_BINARY_ATTR(Länge) in BufferLength. Dies setzt einen negativen Wert in BufferLength.
Wenn *ValuePtr ein Zeiger auf einen anderen Wert als eine Zeichenkette oder binäre Zeichenkette ist, sollte BufferLength den Wert SQL_IS_POINTER haben.
Wenn *ValuePtr einen Datentyp mit fester Länge enthält, ist BufferLength je nach Bedarf entweder SQL_IS_INTEGER oder SQL_IS_UINTEGER.
StringLengthPtr
[Ausgabe] Ein Zeiger auf einen Puffer, in dem die Gesamtzahl der Bytes (ohne das Null-Terminationszeichen) zurückgegeben werden kann, die in *ValuePtr zurückgegeben werden können. Wenn der Attributwert eine Zeichenkette ist und die Anzahl der zurückgegebenen Bytes größer ist als BufferLength minus die Länge des Null-Terminationszeichens, werden die Daten in *ValuePtr auf BufferLength minus die Länge des Null-Terminationszeichens abgeschnitten und vom Treiber null-terminiert.
Rücklieferungen
SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_NO_DATA, SQL_ERROR oder SQL_INVALID_HANDLE.
Diagnostics
Wenn SQLGetConnectAttr SQL_ERROR oder SQL_SUCCESS_WITH_INFO zurückgibt, kann ein zugehöriger SQLSTATE-Wert aus der diagnostischen Datenstruktur gewonnen werden, indem SQLGetDiagRec mit einem HandleType von SQL_HANDLE_DBC und einem Handle von ConnectionHandle aufgerufen wird. Die folgende Tabelle listet die SQLSTATE-Werte auf, die typischerweise von SQLGetConnectAttr zurückgegeben werden, 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 | Treiberspezifische Informationsmeldung. (Funktion gibt SQL_SUCCESS_WITH_INFO zurück.) |
| 01004 | Zeichenfolgendaten, rechts abgeschnitten | Die in *ValuePtr zurückgegebenen Daten wurden auf BufferLength minus die Länge eines Null-Terminationszeichens abgeschnitten. Die Länge des untrunkierten Stringwerts wird in *StringLengthPTR zurückgegeben. (Funktion gibt SQL_SUCCESS_WITH_INFO zurück.) |
| 08003 | Verbindung nicht geöffnet | (DM) Ein Attributwert , der eine offene Verbindung erforderte, wurde angegeben. |
| 08S01 | Kommunikationslinkfehler | Die Kommunikationsverbindung zwischen dem Treiber und der Datenquelle, mit der der Treiber verbunden wurde, ist fehlgeschlagen, bevor die Verarbeitung der Funktion abgeschlossen wurde. |
| HY000 | Allgemeiner Fehler | Es ist ein Fehler aufgetreten, für den kein spezifischer SQLSTATE-Wert vorhanden war und für den keine implementierungsspezifische SQLSTATE definiert wurde. Die Fehlermeldung, die vom Argument MessageText in SQLGetDiagField aus der Diagnosedatenstruktur zurückgegeben wird, beschreibt den Fehler und seine Ursache. |
| HY001 | Speicherzuweisungsfehler | Der Treiber konnte arbeitsspeicher nicht zuordnen, der zur Unterstützung der Ausführung oder Fertigstellung der Funktion erforderlich ist. |
| HY010 | Funktionssequenzfehler | (DM) SQLBrowseConnect wurde für den ConnectionHandle aufgerufen und SQL_NEED_DATA zurückgegeben. Diese Funktion wurde aufgerufen, bevor SQLBrowseConnect SQL_SUCCESS_WITH_INFO oder SQL_SUCCESS zurückgab. (DM) SQLExecute, SQLExecDirect oder SQLMoreResults wurde für den ConnectionHandle 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) *ValuePtr ist eine Zeichenkette, und BufferLength war kleiner als null, aber nicht gleich SQL_NTS. |
| HY092 | Ungültige Attribut-/Options-Identifikator | Der für das Argument Attribut angegebene Wert war für die vom Treiber unterstützte Version von ODBC nicht gültig. |
| HY114 | Treiber unterstützt keine asynchrone Funktionsausführung auf Verbindungsebene | (DM) Eine Anwendung versuchte, asynchrone Funktionsausführung mit SQL_ATTR_ASYNC_DBC_FUNCTIONS_ENABLE für einen Treiber zu ermöglichen, der keine asynchronen Verbindungsoperationen unterstützt. |
| 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. |
| HYC00 | Optionales Feature wurde nicht implementiert | Der für das Argument-Attribut angegebene Wert war ein gültiges ODBC-Verbindungsattribut für die vom Treiber unterstützte ODBC-Version, wurde jedoch nicht vom Treiber unterstützt. |
| HYT01 | Verbindungstimeout abgelaufen | Der Zeitraum für das Verbindungstimeout ist abgelaufen, bevor die Datenquelle auf die Anforderung geantwortet hat. Der Verbindungstimeoutzeitraum wird über SQLSetConnectAttr SQL_ATTR_CONNECTION_TIMEOUT festgelegt. |
| IM001 | Dieser Treiber unterstützt diese Funktion nicht. | (DM) Der Treiber, der dem ConnectionHandle entspricht, unterstützt die Funktion nicht. |
Kommentare
Allgemeine Informationen zu Verbindungsattributen finden Sie unter Verbindungsattribute.
Eine Liste von Attributen, die gesetzt werden können, finden Sie unter SQLSetConnectAttr. Beachte, dass, wenn Attribute ein Attribut angibt, das eine Zeichenkette zurückgibt, ValuePtr ein Zeiger auf einen Puffer für die Zeichenkette sein muss. Die maximale Länge der zurückgegebenen Zeichenkette, einschließlich des Null-Terminationszeichens, beträgt BufferLength-Bytes .
Je nach Attribut muss eine Anwendung keine Verbindung herstellen, bevor sie SQLGetConnectAttr aufruft. Wenn jedoch SQLGetConnectAttr aufgerufen wird und das angegebene Attribut keinen Standard hat und nicht durch einen vorherigen Aufruf von SQLSetConnectAttr gesetzt wurde, gibt SQLGetConnectAttr SQL_NO_DATA zurück.
Wenn das Attribut SQL_ATTR_ TRACE oder SQL_ATTR_ TRACEFILE ist, muss ConnectionHandle nicht gültig sein, und SQLGetConnectAttr wird weder SQL_ERROR noch SQL_INVALID_HANDLE zurückgeben, wenn ConnectionHandle ungültig ist. Diese Eigenschaften gelten für alle Verbindungen. SQLGetConnectAttr gibt SQL_ERROR oder SQL_INVALID_HANDLE zurück, wenn ein anderes Argument ungültig ist.
Obwohl eine Anwendung Anweisungsattribute mit SQLSetConnectAttr festlegen kann, kann eine Anwendung SQLGetConnectAttr nicht verwenden, um Ausweisungsattributwerte abzurufen; es muss SQLGetStmtAttr aufrufen, um die Einstellung der Anweisungsattribute abzurufen.
Sowohl SQL_ATTR_AUTO_IPD als auch SQL_ATTR_CONNECTION_DEAD Verbindungsattribute können durch einen Aufruf zu SQLGetConnectAttr zurückgegeben werden, können jedoch nicht durch einen Aufruf zu SQLSetConnectAttr gesetzt werden.
Note
Es gibt keine asynchrone Unterstützung für SQLGetConnectAttr. Bei der Implementierung von SQLGetConnectAttr kann ein Treiber die Leistung verbessern, indem er die Anzahl der Übertragungen oder Anfragen von Informationen vom Server minimiert.
Verwandte Funktionen
| Weitere Informationen zu | Siehe |
|---|---|
| Zurückgeben der Einstellung eines Anweisungsattributs | SQLGetStmtAttr-Funktion |
| Festlegen eines Verbindungsattributes | SQLSetConnectAttr-Funktion |
| Einstellung eines Umgebungsattributs | SQLSetEnvAttr Funktion |
| Festlegen eines Anweisungsattributs | SQLSetStmtAttr-Funktion |