SQLGetConnectAttr függvény

Megfelelőség
Bemutatott verzió: ODBC 3.0 szabványoknak megfelelés: ISO 92

Summary
Az SQLGetConnectAttr egy kapcsolat attribútumának aktuális beállítását adja vissza.

Note

További információért arról, hogy a Driver Manager mire térképezi ezt a funkciót, amikor egy ODBC 3*.x* alkalmazás ODBC 2*.x* illezserrel dolgozik, lásd a Mapping Replacement Functions for Backward Compatibility of Applications (Mapping Replacement Functions for Backward Compatibility of Applications).

Syntax

  
SQLRETURN SQLGetConnectAttr(  
     SQLHDBC        ConnectionHandle,  
     SQLINTEGER     Attribute,  
     SQLPOINTER     ValuePtr,  
     SQLINTEGER     BufferLength,  
     SQLINTEGER *   StringLengthPtr);  

Arguments

ConnectionHandle
[Bemenet] Kapcsolati leíró.

Attribútum
[Bemenet] Attribútumot a visszahíváshoz.

ValuePtr
[Kimenet] Egy memóriához vezető mutató, amelyben az attribútum által megadott attribútum aktuális értékét lehet visszaadni. Egész számú attribútumok esetén egyes illesztőprogramok csak a puffer alsó 32 vagy 16 bites részét írják, és a magasabb rendű bitet változatlanul hagyják. Ezért az alkalmazásoknak SQLULEN pufferét kell használniuk, és az értéket 0-ra inicializálniuk, mielőtt ezt a függvényt hívják.

Ha a ValuePtr NULL, akkor a StringLengthPtr továbbra is visszaadja a ValuePtr által mutatott pufferben elérhető összes bájtszámot (kivéve a null-terminációs karaktert a karakteradatokhoz).

BufferLength
[Bemenet] Ha az Attribútum egy ODBC által definiált attribútum, és a ValuePtr egy karakterláncra vagy bináris pufferre mutat, akkor ennek az argumentumnak a *ValuePtr hosszúságának kell lennie. Ha az attribútum ODBC által definiált attribútum, és a *ValuePtr egy egész szám, akkor a BufferLength-et figyelmen kívül hagyjuk. Ha a *ValuePtr értéke Unicode string (amikor az SQLGetConnectAttrW hívásakor), akkor a BufferLength argumentusnak páros számnak kell lennie.

Ha az Attribútum illesztőgép által definiált attribútum, az alkalmazás a Driver Manager számára a BufferLength argumentus beállításával jelzi az attribútum természetét. A BufferLength a következő értékeket kaphatja:

  • Ha a *ValuePtr egy karakterláncra mutató, akkor a BufferLength a lánc hossza.

  • Ha a *ValuePtr egy bináris pufferre mutató, az alkalmazás a SQL_LEN_BINARY_ATTR(hosszúság) makró eredményét a BufferLength-be helyezi. Ez negatív értéket ad a BufferLength-ben.

  • Ha a *ValuePtr egy mutató egy másik értékre, mint egy karakterláncra vagy bináris stringre, akkor a BufferLengthnek az értéke az SQL_IS_POINTER.

  • Ha a *ValuePtr fix hosszúságú adattípust tartalmaz, akkor a BufferLength vagy SQL_IS_INTEGER, vagy SQL_IS_UINTEGER, ahogy megfelelően.

StringLengthPtr
[Kimenet] Egy puffermutató, amelyben vissza lehet adni a *ValuePtr-ben elérhető összes bájt számot (a null-terminációs karakter kivételével). Ha az attribútumérték egy karakterlánc, és a visszaadható bájtok száma nagyobb, mint a BufferLength mínusz a null-terminációs karakter hossza, akkor a *ValuePtr adatait a null-terminációs karakter hossza mínusz BufferLength-re vágják, és a meghajtó null-terminálja őket.

Returns

SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_NO_DATA, SQL_ERROR vagy SQL_INVALID_HANDLE.

Diagnostics

Amikor az SQLGetConnectAttr SQL_ERROR vagy SQL_SUCCESS_WITH_INFO értéket ad vissza, a diagnosztikai adatstruktúrából SQLGetDiagRec hívásával kapható hozzá egy SQL_HANDLE_DBC HandleType és ConnectionHandleHandle segítségével. Az alábbi táblázat felsorolja az SQLGetConnectAttr által általában visszaadott SQLSTATE értékeket, és mindegyiket ennek a függvénynek a kontextusában magyarázza; a "(DM)" jelölés megelőzi a Driver Manager által visszaadott SQLSTATE-leírásokat. Az egyes SQLSTATE-értékekhez társított visszatérési kód SQL_ERROR, kivéve, ha másként van feltüntetve.

SQLSTATE Hiba Description
01000 Általános figyelmeztetés Illesztőprogram-specifikus tájékoztató üzenet. (A függvény SQL_SUCCESS_WITH_INFO ad vissza.)
01004 Sztringadatok, jobb csonkolt A *ValuePtr-ben visszaadott adatokat úgy vágták le, hogy BufferLength mínusz egy null-terminációs karakter hossza. A csonkolatlan string értékének hosszát a *StringLengthPtr-ben adjuk vissza. (A függvény SQL_SUCCESS_WITH_INFO ad vissza.)
08003 A kapcsolat nincs megnyitva (DM) Megadtak egy Attribútumértéket , amely nyitott kapcsolatot igényel.
08S01 Kommunikációs kapcsolat hibája Az illesztőprogram és az adatforrás közötti kommunikációs kapcsolat, amelyhez az illesztőprogram csatlakoztatva volt, nem sikerült, mielőtt a függvény befejeződött a feldolgozás.
HY000 Általános hiba Hiba történt, amely miatt nem volt konkrét SQLSTATE, és amelyhez nem definiáltak implementációspecifikus SQLSTATE-t. Az SQLGetDiagFieldMessageText argumentusa által visszaadott hibaüzenet a diagnosztikai adatszerkezetből leírja a hibát és annak okát.
HY001 Memóriafoglalási hiba Az illesztőprogram nem tudta lefoglalni a függvény végrehajtásának vagy befejezésének támogatásához szükséges memóriát.
HY010 Függvényütemezési hiba (DM) Az SQLBrowseConnect-et a ConnectionHandle miatt hívták meg, és SQL_NEED_DATA visszaadták. Ezt a függvényt az SQLBrowseConnect SQL_SUCCESS_WITH_INFO vagy SQL_SUCCESS előtt hívták meg.

(DM) Az SQLExecute, SQLExecDirect vagy SQLMoreResults meghívást kapott a ConnectionHandle-hez , és SQL_PARAM_DATA_AVAILABLE visszaadta. Ez a függvény az összes streamelt paraméter adatainak lekérése előtt lett meghívva.
HY013 Memóriakezelési hiba A függvényhívás nem dolgozható fel, mert a mögöttes memóriaobjektumok nem érhetők el, esetleg a memóriahiány miatt.
HY090 Érvénytelen sztring vagy puffer hossza (DM) *ValuePtr egy karakterlánc, és a BufferLength nullánál kisebb volt, de nem egyenlő SQL_NTS-vel.
HY092 Érvénytelen attribútum/opcióazonosító Az Attribútum argumentumhoz megadott érték nem volt érvényes az illesztőprogram által támogatott ODBC verzióra.
HY114 Az illesztőprogram nem támogatja a kapcsolati szintű aszinkron függvény végrehajtását (DM) Egy alkalmazás megpróbálta engedélyezni az aszinkron funkció végrehajtását SQL_ATTR_ASYNC_DBC_FUNCTIONS_ENABLE-vel egy olyan illesztőprogramnál, amely nem támogatja aszinkron kapcsolódási műveleteket.
HY117 A kapcsolat ismeretlen tranzakciós állapot miatt fel van függesztve. Csak a leválasztási és írásvédett függvények engedélyezettek. (DM) A felfüggesztett állapotról további információt az SQLEndTran függvényben talál.
HYC00 A választható funkció nem implementálva Az Attribútum argumentumhoz megadott érték érvényes ODBC kapcsolati attribútumot adott az illesztőprogram által támogatott ODBC verzióhoz, de az illesztőprogram nem támogatta.
HYT01 A kapcsolati időkorlát lejárt A kapcsolat időtúllépési időtartama lejárt, mielőtt az adatforrás válaszolt a kérésre. A kapcsolat időtúllépési időszaka az SQLSetConnectAttr SQL_ATTR_CONNECTION_TIMEOUT keresztül van beállítva.
IM001 Az illesztőprogram nem támogatja ezt a függvényt (DM) A ConnectionHandle-nek megfelelő illesztőprogram nem támogatja a függvényt.

Comments

Általános információkért a kapcsolati attribútumokról lásd: Kapcsolati attribútumok.

A beállítási attribútumok listájáért lásd: SQLSetConnectAttr. Figyeljük meg, hogy ha az Attribútum megad egy attribútumot, amely egy stringet ad, akkor a ValuePtr-nek egy pufferre kell utalnia a stringhez. A visszaadott string maximális hossza, beleértve a null-terminációs karaktert is, a BufferLength bájt.

Az attribútumtól függően egy alkalmazásnak nem kell kapcsolatot létrehoznia az SQLGetConnectAttr hívása előtt. Azonban, ha az SQLGetConnectAttr-t hívják, és a megadott attribútumnak nincs alapértelmezett tulajdonsága, és nem állították be korábbi SQLSetConnectAttr hívással, akkor az SQLGetConnectAttr SQL_NO_DATA visszaadja.

Ha az attribútum SQL_ATTR_ TRACE vagy SQL_ATTR_ TRACEFILE, akkor a ConnectionHandle nem feltétlenül érvényes, és az SQLGetConnectAttr nem adja vissza SQL_ERROR vagy SQL_INVALID_HANDLE, ha a ConnectionHandle érvénytelen. Ezek az attribútumok minden kapcsolatra érvényesek. Az SQLGetConnectAttr SQL_ERROR vagy SQL_INVALID_HANDLE értéket ad vissza, ha egy másik érv érvénytelen.

Bár egy alkalmazás az SQLSetConnectAttr használatával állíthat utasítás attribútumokat, az alkalmazás nem használhatja az SQLGetConnectAttr-t az utasítás attribútumértékek lekérésére; az SQLGetStmtAttr-t kell hívnia, hogy lekérje a mondattribútumok beállítását.

Mind a SQL_ATTR_AUTO_IPD, mind a SQL_ATTR_CONNECTION_DEAD kapcsolati attribútumok visszaadhatók egy SQLGetConnectAttr hívással, de nem állíthatók be SQLSetConnectAttr hívással.

Note

Az SQLGetConnectAttr esetében nincs aszinkron támogatás. Az SQLGetConnectAttr megvalósításakor egy illesztőprogram javíthatja a teljesítményt azzal, hogy minimalizálja, hányszor küldik vagy kérik az információt a szerverről.

Információ erről: Nézze
Utasításattribútum beállításának visszaadása SQLGetStmtAttr függvény
Kapcsolati attribútumot beállítás SQLSetConnectAttr függvény
Környezeti attribútumok beállítása SQLSetEnvAttr Function
Utasításattribútum beállítása SQLSetStmtAttr függvény