Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Megfelelőség
Bemutatott verzió: ODBC 3.0 szabványoknak megfelelés: ISO 92
Summary
Az SQLSetConnectAttr olyan attribútumokat állít be, amelyek a kapcsolatok aspektusait irányítják.
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 SQLSetConnectAttr(
SQLHDBC ConnectionHandle,
SQLINTEGER Attribute,
SQLPOINTER ValuePtr,
SQLINTEGER StringLength);
Arguments
ConnectionHandle
[Bemenet] Kapcsolati leíró.
Attribútum
[Bemenet] Attribútumot a készlethez, felsorolva a "Hozzászólások" részén.
ValuePtr
[Bemenet] Mutató az értékre, amelyet az attribútumhoz kell társítani.
Az attribútum értékétől függően a ValuePtr egy aláíratlan egész érték lesz, vagy egy null-véges karakterláncra mutat. Megjegyzendő, hogy az attribútumok integráltípusa nem feltétlenül fix hosszúságú, részletekért lásd a Hozzászólások szekciót.
StringLength
[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. Karakterlánc adatok esetén ennek az argumentumnak tartalmaznia kell a sztróban lévő bájtok számát.
Ha az attribútum ODBC által definiált attribútum, a ValuePtr pedig egész szám, akkor a StringLength figyelmen kívül hagyjuk.
Ha az attribútum illesztőgép által definiált attribútum, az alkalmazás a DriverLength argumentumot beállítva jelzi az attribútum természetét a Driver Manager-nek. A StringLength a következő értékeket kaphatja:
Ha a ValuePtr egy karakterlánc mutatója, akkor a StringLength a lánc vagy SQL_NTS hossza.
Ha a ValuePtr egy bináris pufferre mutató, akkor az alkalmazás a SQL_LEN_BINARY_ATTR(hosszúság) makró eredményét a StringLength-be helyezi. Ez negatív értéket ad a StringLength-ben.
Ha a ValuePtr egy másik értékre mutató, mint egy karakterlánc vagy bináris string, akkor a StringLengthnek SQL_IS_POINTER értéke kell, hogy legyen.
Ha a ValuePtr fix hosszúságú értéket tartalmaz, akkor a StringLength vagy SQL_IS_INTEGER, vagy SQL_IS_UINTEGER, ahogy megfelelően.
Returns
SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR, SQL_INVALID_HANDLE vagy SQL_STILL_EXECUTING.
Diagnostics
Amikor az SQLSetConnectAttr SQL_ERROR vagy SQL_SUCCESS_WITH_INFO értéket ad, egy hozzárendelt SQLSTATE érték elérhető SQLGetDiagRec hívásával, amely egy SQL_HANDLE_DBC HandleType és a ConnectionHandle Handle nevű HandleType (HandleType) segítségével érhető el. Az alábbi táblázat felsorolja az SQLSetConnectAttr által gyakran visszaadott SQLSTATE értékeket, és mindegyiket a függvény kontextusában magyarázza el; 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.
A sofőr visszaküldheti SQL_SUCCESS_WITH_INFO, hogy információt adjon az opció beállításának eredményéről.
| 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.) |
| 01S02 | A beállítás értéke módosult | Az illesztőprogram nem támogatta az ValuePtr-ben megadott értéket, és hasonló értéket cserélt. (A függvény SQL_SUCCESS_WITH_INFO ad vissza.) |
| 08002 | Használatban lévő kapcsolatnév | Az attribútum érvelés SQL_ATTR_ODBC_CURSORS volt, és az illesztőprogram már csatlakoztatva volt az adatforráshoz. |
| 08003 | A kapcsolat nincs megnyitva | (DM) Megadtak egy Attribútumértéket , amely nyitott kapcsolatot igényel, de a ConnectionHandle nem volt csatlakoztatott állapotban. |
| 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. |
| 24000 | Érvénytelen kurzorállapot | Az attribútumérv SQL_ATTR_CURRENT_CATALOG volt, és egy eredményhalmaz váratlan volt. |
| 25000 | Illegális művelet helyi tranzakció közben | Egy kapcsolat egy helyi tranzakcióban volt, miközben megpróbáltak elosztott tranzakciós kapcsolatba (DTC) belépni a SQL_ATTR_ENLIST_IN_DTC kapcsolat attribútumának beállításával. Egy kapcsolat már be van írva egy DTC-be. Egy kapcsolatot regisztráltak egy elosztott tranzakciós kapcsolatba, és egy helyi tranzakciót úgy indítottak el, hogy SQL_ATTR_AUTOCOMMIT SQL_AUTOCOMMIT_OFF-re állították be. |
| 3D000 | Érvénytelen katalógusnév | Az attribútum érvelés SQL_CURRENT_CATALOG volt, és a megadott katalógusnév érvénytelen volt. |
| 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 SQLGetDiagRec által a *MessageText pufferben visszaadott hibaüzenet 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. |
| HY008 | A műveletet megszakították | Az aszinkron feldolgozás engedélyezett volt a ConnectionHandle számára. Az SQLSetConnectAttr függvényt hívták meg, és mielőtt befejezte volna a végrehajtást, az SQLCancelHandle függvényt hívták a ConnectionHandle-en, majd az SQLSetConnectAttr függvényt ismét a ConnectionHandle szerveren hívták meg. Vagy az SQLSetConnectAttr függvényt hívták, és mielőtt befejezte volna a végrehajtást, az SQLCancelHandle-t a ConnectionHandle-en egy másik szálból hívták meg egy többszálas alkalmazásban. |
| HY009 | Érvénytelen null mutató használata | Az Attribútumok egy kapcsolódási attribútumot azonosított, amelyhez string értéket kellett írni, míg a ValuePtr argumentum null mutató volt. |
| HY010 | Függvényütemezési hiba | (DM) Egy aszinkron futó függvényt hívtak egy StatementHandle (StatementHandle , amely a ConnectionHandle-hez kapcsolódik), és még futott, amikor az SQLSetConnectAttr hívása volt. (DM) Egy aszinkron futó függvényt (nem ezt) hívtak a ConnectionHandle miatt, és még akkor futott, amikor ezt a függvényt hívták. (DM) Az SQLExecute, SQLExecDirect vagy SQLMoreResults hívták meg az egyik ConnectionHandle által összetartozó utasításkezelőt, és SQL_PARAM_DATA_AVAILABLE visszaadták. Ez a függvény az összes streamelt paraméter adatainak lekérése előtt lett meghívva. (DM) Az SQLExecute, SQLExecDirect, SQLBulkOperations vagy SQLSetPos egy ConnectionHandle hozzátartozó StatementHandle miatt hívták meg, és SQL_NEED_DATA adták vissza. Ezt a függvényt az összes adatvégrehajtási paraméter vagy oszlop adatküldése előtt hívták meg. (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. |
| HY011 | Az attribútumot most nem lehet beállítani | Az attribútum érv SQL_ATTR_TXN_ISOLATION volt, és egy tranzakció nyitott volt. |
| 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. |
| HY024 | Érvénytelen attribútumérték | A megadott attribútumérték megadása esetén a ValuePtr érték egy érvénytelen értéket is megadott. (A Driver Manager csak olyan kapcsolati és kimutatási attribútumokra ad vissza, amelyek diszkrét értékhalmazt fogadnak el, például SQL_ATTR_ACCESS_MODE vagy SQL_ATTR_ASYNC_ENABLE. Minden más kapcsolati és utasítás attribútumnál az illesztőprogramnak ellenőriznie kell a ValuePtr által megadott értéket.) Az Attribútum érve SQL_ATTR_TRACEFILE vagy SQL_ATTR_TRANSLATE_LIB volt, a ValuePtr pedig üres string volt. |
| HY090 | Érvénytelen sztring vagy puffer hossza | (DM) *ValuePtr egy karakterlánc, és a StringLength érve kisebb volt 0-nál, de nem volt SQL_NTS. |
| HY092 | Érvénytelen attribútum/opcióazonosító | (DM) Az Attribútum argumentumhoz megadott érték nem volt érvényes az illesztőprogram által támogatott ODBC verzióra. (DM) Az Attribútum argumentumhoz megadott érték csak olvasható attribútum volt. |
| 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) További információért a felfüggesztett állapotról lásd : SQLEndTran függvény. |
| HY121 | A Cursor Library és a Driver-Aware Pooling egyszerre nem engedélyezhető | További információ: Driver-Aware kapcsolatkészletezés. |
| HYC00 | A választható funkció nem implementálva | Az Attribútum argumentumhoz megadott érték egy érvényes ODBC kapcsolat vagy mondattribútum volt 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 csatlakoztatott illesztőprogram nem támogatja ezt a funkciót. |
| IM009 | Nem lehet betölteni a fordítási DLL-t | Az illesztőprogram nem tudta betölteni a kapcsolathoz megadott fordítási DLL-t. Ez a hiba csak akkor tér vissza, ha az attribútum SQL_ATTR_TRANSLATE_LIB. |
| IM017 | A lekérdezés aszinkron értesítési módban le van tiltva | Az értesítési modell használata esetén a lekérdezés le van tiltva. |
| IM018 | Az SQLCompleteAsync nem lett meghívva az előző aszinkron művelet végrehajtásához ezen a leírón. | Ha a leíró előző függvényhívása SQL_STILL_EXECUTING ad vissza, és ha az értesítési mód engedélyezve van, az SQLCompleteAsync-et a leírón kell meghívni a művelet utófeldolgozásához és befejezéséhez. |
| S1118 | Az illesztőprogram nem támogatja az aszinkron értesítést | SQL_ATTR_ASYNC_DBC_EVENT be volt állítva (a kapcsolat létrejötte után), de az illesztőprogram nem támogatja az aszinkron értesítést. |
Ha az attribútum egy utasítás attribútum, az SQLSetConnectAttr vissza tud adni bármely SQLSetStmtAttr által visszaadott SQLSTATE-t.
Comments
Általános információkért a kapcsolati attribútumokról lásd: Kapcsolati attribútumok.
A jelenleg definiált attribútumok és az ODBC verziója, amelyben bemutatták őket, a táblázatban láthatók a későbbi részben; Várható, hogy több attribútumot definiálnak, hogy kihasználják a különböző adatforrásokat. Az ODBC számos attribútumot fenntart; a driver fejlesztőknek az Open Group-tól saját, illetőző-specifikus használatukra kell fenntartaniuk az értékeket.
Note
Az ODBC 3*.x* verzióban lejáratolt a kijelentés attribútumok beállítása a kapcsolati szinten, az SQLSetConnectAttr hívásával. Az ODBC 3*.x* alkalmazásoknak soha nem szabad állítási attribútumokat beállítaniuk a kapcsolati szinten. Az ODBC 3*.x* utasítás attribútumok nem állíthatók be a kapcsolati szinten, kivéve a SQL_ATTR_METADATA_ID és SQL_ATTR_ASYNC_ENABLE attribútumokat, amelyek mind kapcsolati attribútumok, mind utasítás attribútumok, és beállíthatók a kapcsolati vagy az utasítás szintjén.
Az ODBC 3*.x* drivereknek csak akkor kell támogatnia ezt a funkciót, ha olyan ODBC 2*.x* alkalmazásokkal, amelyek a ODBC 2*.x* utasításopciókat a kapcsolati szinten állítják be. További információkért lásd a SQLSetConnectOption Mapping a G függelékben: Vezérlő útmutatók a visszamenőleges kompatibilitáshoz.
Egy alkalmazás bármikor hívhatja az SQLSetConnectAttr-t a kapcsolat kijelölése és felszabadulása között. Az alkalmazás által sikeresen beállított kapcsolati és utasítás attribútumok fennmaradnak, amíg az SQLFreeHandle meg nem hívja a kapcsolatot. Például, ha egy alkalmazás az SQLSetConnectAttr-t hívja az adatforráshoz való csatlakozás előtt, az attribútum akkor is megmarad, ha az SQLSetConnectAttr meghibásodik az illesztőprogramban, amikor az alkalmazás csatlakozik az adatforráshoz; Ha egy alkalmazás illesztő-specifikus attribútumot állít be, az attribútum akkor is megmarad, ha az alkalmazás egy másik illesztőprogramhoz csatlakozik a kapcsolaton.
Néhány kapcsolati attribútumot csak a kapcsolat létrejött előtt lehet beállítani; másokat csak a kapcsolat létrejött után lehet beállítani. Az alábbi táblázat megmutatja azokat a kapcsolati attribútumokat, amelyeket a kapcsolat létrehozása előtt vagy után kell beállítani. Either azt jelzi, hogy az attribútum beállítható a csatlakozás előtt vagy után.
| Attribute | Csatlakozás előtt vagy után? |
|---|---|
| SQL_ATTR_ACCESS_MODE | Bármelyik[1] |
| SQL_ATTR_ASYNC_DBC_EVENT | Bármelyik |
| SQL_ATTR_ASYNC_DBC_FUNCTIONS_ENABLE | Bármelyik[4] |
| SQL_ATTR_ASYNC_DBC_PCALLBACK | Bármelyik |
| SQL_ATTR_ASYNC_DBC_PCONTEXT | Bármelyik |
| SQL_ATTR_ASYNC_ENABLE | Bármelyik[2] |
| SQL_ATTR_AUTO_IPD | Bármelyik |
| SQL_ATTR_AUTOCOMMIT | Mind[5] |
| SQL_ATTR_CONNECTION_DEAD | Utána |
| SQL_ATTR_CONNECTION_TIMEOUT | Bármelyik |
| SQL_ATTR_CURRENT_CATALOG | Bármelyik[1] |
| SQL_ATTR_DBC_INFO_TOKEN | Utána |
| SQL_ATTR_ENLIST_IN_DTC | Utána |
| SQL_ATTR_BEJELENTKEZÉSI_IDŐKORLÁT | Előtte |
| SQL_ATTR_METADATA_ID | Bármelyik |
| SQL_ATTR_ODBC_CURSORS | Előtte |
| SQL_ATTR_PACKET_SIZE | Előtte |
| SQL_ATTR_QUIET_MODE | Bármelyik |
| SQL_ATTR_TRACE | Bármelyik |
| SQL_ATTR_TRACEFILE | Bármelyik |
| SQL_ATTR_TRANSLATE_LIB | Utána |
| SQL_ATTR_TRANSLATE_OPTION | Utána |
| SQL_ATTR_TXN_ISOLATION | Bármelyik[3] |
[1] SQL_ATTR_ACCESS_MODE és SQL_ATTR_CURRENT_CATALOG beállíthatók a csatlakozás előtt vagy után, a meghajtótól függően. Az interoperábilis alkalmazások azonban a csatlakozás előtt beállítják őket, mert egyes illesztőprogramok nem támogatják a módosításokat a csatlakozás után.
[2] SQL_ATTR_ASYNC_ENABLE be kell állítani, mielőtt aktív állítás lenne.
[3] SQL_ATTR_TXN_ISOLATION csak akkor állítható, ha a kapcsolaton nincsenek nyitott tranzakciók. Néhány kapcsolati attribútum hasonló érték helyettesítését támogatja, ha az adatforrás nem támogatja a *ValuePtr által megadott értéket. Ilyen esetekben az illesztőprogram SQL_SUCCESS_WITH_INFO-ot és SQLSTATE 01S02-t ad vissza (az opció értéke megváltozott). Például, ha az attribútum SQL_ATTR_PACKET_SIZE és a *ValuePtr meghaladja a maximális csomagméretet, akkor az illesztőprogram a maximális méretet helyettesíti. A helyettesített érték meghatározásához egy alkalmazás az SQLGetConnectAttr nevű eszközt hívja.
[4] Ha SQL_ATTR_ASYNC_DBC_FUNCTIONS_ENABLE a kapcsolat megnyitása előtt van beállítva, a Driver Manager beállítja az illesztőprogram attribútumát, amikor az illesztőprogram betöltődik egy SQLBrowseConnect, SQLConnect vagy SQLDriverConnect hívás során. Az SQLBrowseConnect, SQLConnect vagy SQLDriverConnect hívása előtt a Driver Manager nem tudja, melyik illesztőhöz csatlakozzon, és nem tudja, hogy az illesztőprogram aszinkron csatlakozási műveleteket támogat-e. Ezért a Driver Manager mindig visszaadja SQL_SUCCESS. De ha az illezser nem támogatja aszinkron kapcsolati műveleteket, az SQLBrowseConnect, SQLConnect vagy SQLDriverConnect hívása meghibás.
[5] Amikor SQL_ATTR_AUTOCOMMIT HAMIS-ra van állítva, az alkalmazásoknak hívniuk kell SQLEndTran(SQL_ROLLBACK), ha bármely API SQL_ERROR ad vissza a tranzakciós konzisztencia biztosítására.
A *ValuePtr pufferben található információhalmaz formátuma a megadott attribútumtól függ. Az SQLSetConnectAttr két különböző formátumban fogadja az attribútuminformációkat: null végű karakterláncot vagy egész számértéket. Mindegyik formátuma az attribútum leírásában szerepel. Az SQLSetConnectAttrValuePtr argumentumával jelölt karakterláncok StringLength bájtjának hosszúságúak.
A StringLength érvet figyelmen kívül hagyjuk, ha a hosszt az attribútum határozza meg, ahogy az ODBC 2*.x* vagy korábbi attribútumok esetében is így van.
| Attribútum | ValuePtr tartalma |
|---|---|
| SQL_ATTR_ACCESS_MODE (ODBC 1.0) | Egy SQLUINTEGER érték. SQL_MODE_READ_ONLY az illesztőprogram vagy adatforrás jelzi, hogy a kapcsolat nem szükséges ahhoz, hogy olyan SQL utasításokat támogassanak, amelyek frissítéseket okoznak. Ez a mód használható a zárolási stratégiák, tranzakciókezelés vagy más, az illesztőhöz vagy adatforráshoz igazított területek optimalizálására. A sofőrnek nem kell megakadályoznia, hogy ilyen nyilatkozatokat az adatforráshoz küldjenek. Az illesztőprogram és az adatforrás viselkedése, amikor arra kérik az SQL utasításokat, amelyek nem csak olvashatók egy csak olvasható kapcsolat során, megvalósítás által definiált. SQL_MODE_READ_WRITE az alapértelmezett. |
| SQL_ATTR_ASYNC_DBC_EVENT (ODBC 3.8) | Egy SQLPOINTER érték, amely eseménykezelő. Az aszinkron függvények befejezésének értesítése az SQLSetConnectAttr hívásával a SQL_ATTR_ASYNC_STMT_EVENT attribútummal és az esemény kezelő megjelölésével lehetséges. Megjegyzés: Az értesítési módszer nem támogatott a kurzorkönyvtárban. Az alkalmazás hibaüzenetet kap, ha az SQLSetConnectAttr használatával próbálja engedélyezni a kurzortárat, ha az értesítési módszer engedélyezve van. |
| SQL_ATTR_ASYNC_DBC_FUNCTIONS_ENABLE (ODBC 3.8) | Egy SQLUINTEGER érték, amely lehetővé teszi vagy letiltja a kiválasztott függvények aszinkron futtatását a kapcsolati fogantyún. További információt az Aszinkron végrehajtás (Lekérdezési módszer) című témakörben talál. SQL_ASYNC_DBC_ENABLE_ON = Engedélyezzük az aszinkron műveletet meghatározott kapcsolathoz kapcsolódó függvényekhez. SQL_ASYNC_DBC_ENABLE_OFF = (Alapértelmezett) Tiltsd ki az aszinkron működést a megadott kapcsolathoz kapcsolódó függvényekhez. A SQL_ATTR_ASYNC_DBC_FUNCTIONS_ENABLE beállítása mindig szinkron (vagyis soha nem tér vissza SQL_STILL_EXECUTING). Az utasításműveletek aszinkron végrehajtása SQL_ATTR_ASYNC_ENABLE engedélyezett. |
| SQL_ATTR_ASYNC_DBC_PCALLBACK (ODBC 3.8) | Egy SQLPOINTER érték, amely a kontextus struktúrára mutat. Csak a Driver Manager hívhatja meg egy illezser SQLSetStmtAttr funkcióját ezzel a attribútummal. |
| SQL_ATTR_ASYNC_DBC_PCONTEXT (ODBC 3.8) | Egy SQLPOINTER érték, amely a kontextusstruktúrára mutat. Csak a Driver Manager hívhatja meg egy illezser SQLSetStmtAttr funkcióját ezzel a attribútummal. |
| SQL_ATTR_ASYNC_ENABLE (ODBC 3.0) | Egy SQLULEN érték, amely meghatározza, hogy egy adott kapcsolaton adott utasítással hívott függvényt aszinkron módon hajtanak végre: SQL_ASYNC_ENABLE_OFF = Kapcsolja le a kapcsolati szintű aszinkron végrehajtás támogatását az utasításműveletekhez (az alapértelmezett). SQL_ASYNC_ENABLE_ON = Kapcsolódási szintű aszinkron végrehajtás támogatásának engedélyezése utasításműveletekhez. Ez az attribútum beállítható, hogy az SQLGetInfo SQL_ASYNC_MODE információtípussal SQL_AM_CONNECTION vagy SQL_AM_STATEMENT ad-e vissza. |
| SQL_ATTR_AUTO_IPD (ODBC 3.0) | Egy csak olvasható SQLUINTEGER érték, amely meghatározza az IPD automatikus populációját támogatott-e egy SQLPrepare hívás után: SQL_TRUE = Az IPD automatikus populációja SQLPrepare hívás után támogatja az illezőgép. SQL_FALSE = Az IPD automatikus populációja SQLPrepare hívás után nem támogatja az illesztőprogramot. Azok a szerverek, amelyek nem támogatják az előkészített kijelentéseket, nem tudják automatikusan feltölteni az IPD-t. Ha a SQL_ATTR_AUTO_IPD kapcsolati attribútumhoz vissza SQL_TRUE jelenik meg, akkor az utasítás attribútum SQL_ATTR_ENABLE_AUTO_IPD beállíthatja az IPD automatikus populációját be- vagy kikapcsolására. Ha SQL_ATTR_AUTO_IPD SQL_FALSE, akkor SQL_ATTR_ENABLE_AUTO_IPD nem állítható SQL_TRUE-re. A SQL_ATTR_ENABLE_AUTO_IPD alapértelmezett értéke megegyezik SQL_ATTR_AUTO_IPD értékével. Ez a kapcsolat attribútumot az SQLGetConnectAttr visszaadhatja, de az SQLSetConnectAttr nem állíthatja be. |
| SQL_ATTR_AUTOCOMMIT (ODBC 1.0) | Egy SQLUINTEGER érték, amely megadja, hogy automatikus vagy kézi commitási módot használjak-e: SQL_AUTOCOMMIT_OFF = Az illezser manuális commit módot használ, és az alkalmazásnak explicit módon kell végrehajtania vagy vissza kell fordítania a tranzakciókat SQLEndTran-nal. SQL_AUTOCOMMIT_ON = Az illesztőprogram automatikus commit módot használ. Minden kijelentést azonnal végrehajtanak a végrehajtás után. Ez az alapértelmezett beállítás. A kapcsolaton lévő összes nyitott tranzakció akkor van elkötelezve, amikor SQL_ATTR_AUTOCOMMIT SQL_AUTOCOMMIT_ON-ra van állítva, hogy a kézi commitációs módból automatikus commit módra váltson. További információért lásd: Commit mód. Fontos: Egyes adatforrások törlik a hozzáférési terveket, és lezárják a kurzorokat minden állításhoz egy kapcsolaton, amikor egy utasítás elkötelezett; Az automatikus commitási mód okozhatja ezt, miután minden nemlekérdezési utasítást lefuttatnak, vagy amikor a kurzor lezárult egy lekérdezéshez. További információért lásd az SQLGetInfo SQL_CURSOR_COMMIT_BEHAVIOR és SQL_CURSOR_ROLLBACK_BEHAVIOR információtípusokat a Tranzakciók Hatása a kurzorokra és előkészített kimutatásokra. Amikor egy batch-et automatikus commit módban hajtanak végre, két dolog lehetséges. Az egész tétel automatikusan összeállítható egységként kezelhető, vagy a tétel minden állítása automatikusan összeállítható egységként kezelhető. Bizonyos adatforrások mindkét viselkedést támogatják, és lehetőséget adhatnak arra, hogy az egyiket válasszuk. Driver-definiálva van az illesztő, hogy egy tételt automatikusan commitable egységként kezelnek-e, vagy hogy a tételen belüli egyes állítások automatikusan kompatibilisek-e. |
| SQL_ATTR_CONNECTION_DEAD (ODBC 3.5) |
Egy csak olvasható SQLUINTEGER érték, amely a kapcsolat állapotát jelzi. Ha SQL_CD_TRUE, a kapcsolat elveszett. Ha SQL_CD_FALSE, a kapcsolat továbbra is aktív. |
| SQL_ATTR_CONNECTION_TIMEOUT (ODBC 3.0) | Egy SQLUINTEGER érték, amely azt feleli meg, mennyi másodperc vár arra, hogy bármely kérés befejeződjön a kapcsolaton, mielőtt visszatérne az alkalmazáshoz. Az illeszőrnek vissza kell adnia az SQLSTATE HYT00-at (időkorlát lejárt) bármikor, amikor lehetséges időkorlátot küldeni olyan helyzetben, amely nem kapcsolódik lekérdezés végrehajtásához vagy bejelentkezéshez. Ha az ValuePtr 0-val egyezik (az alapértelmezett), nincs időtúllépés. |
| SQL_ATTR_CURRENT_CATALOG (ODBC 2.0) | Egy karakterlánc, amely tartalmazza a katalógus nevét, amelyet az adatforrás használ. Például az SQL Server-ben a katalógus adatbázis, így az illeszület USEadatbázis-utasítást küld az adatforrásnak, ahol az adatbázis az *ValuePtr-ben megadott adatbázis. Egyszintű illezőprogramnál a katalógus lehet egy könyvtár, így az illesztőprogram megváltoztatja a jelenlegi könyvtárát a *ValuePtr-ben megadott könyvtárra. |
| SQL_ATTR_DBC_INFO_TOKEN (ODBC 3.8 | Egy SQLPOINTER érték, amelyet a kapcsolati információs token-et visszaállítanak a DBC fogantyúba, amikor az SQLRateConnection (*pRating) paramétere nem egyenlő 100-assal. SQL_ATTR_DBC_INFO_TOKEN csak a szettre használható. Nem lehet SQLGetConnectAttr vagy SQLGetConnectOption segítségével ezt az értéket visszaszerezni. A Driver Manager SQLSetConnectAttr nem fogadja el SQL_ATTR_DBC_INFO_TOKEN, mivel egy alkalmazásnak nem szabad beállítania ezt az attribútumot. Ha egy meghajtó SQL_ERROR SQL_ATTR_DBC_INFO_TOKEN beállítása után visszatér, a medencéből épp megszerzett kapcsolat felszabadul. A Driver Manager ezután megpróbál egy másik kapcsolatot szerezni a poolból. További információért lásd a Fejlődés Connection-Pool tudatosságot egy ODBC sofőr területén. |
| SQL_ATTR_ENLIST_IN_DTC (ODBC 3.0) | Egy SQLPOINTER érték, amely meghatározza, hogy az ODBC illezőprogramot használja-e elosztott tranzakciókban, amelyeket a Microsoft Component Services koordinál. Továbbítson egy DTC OLE tranzakciós objektumot, amely megadja a tranzakciót SQL Server-be exportálni, vagy SQL_DTC_DONE a kapcsolat DTC assosiációjának megszüntetésére. Az ügyfél a Microsoft Distributed Transaction Coordinator (MS DTC) OLE ITransactionDispenser::BeginTransaction metóduát hívja, hogy elindítson egy MS DTC tranzakciót, és létrehozza egy MS DTC tranzakciós objektumot, amely a tranzakciót képviseli. Az alkalmazás ezután az SQLSetConnectAttr-t hívja SQL_ATTR_ENLIST_IN_DTC opcióval, hogy a tranzakciós objektumot az ODBC kapcsolathoz társítsa. Minden kapcsolódó adatbázis-tevékenységet az MS DTC tranzakció védelme alatt végeznek. Az alkalmazás az SQLSetConnectAttr-t hívja SQL_DTC_DONE-vel, hogy véget vene a kapcsolat DTC assosiációjának. További információkért tekintse meg az MS DTC dokumentációját. |
| SQL_ATTR_LOGIN_TIMEOUT (ODBC 1.0) | Egy SQLUINTEGER érték, amely megfelel annak a másodperceknek, amikor egy bejelentkezési kérés befejeződik, mielőtt visszatérne az alkalmazáshoz. Az alapértelmezett illesztőfüggő. Ha a ValuePtr 0, az időtúllépés letiltott, és egy csatlakozási kísérlet határozatlan ideig vár. Ha a megadott időkérés meghaladja az adatforrás maximális bejelentkezési időkorlátját, az illesztőprogram ezt az értéket helyettesíti, és visszaadja az SQLSTATE 01S02 (Opció értéke megváltozott). |
| SQL_ATTR_METADATA_ID (ODBC 3.0) | Egy SQLUINTEGER érték, amely meghatározza, hogyan kezelik a katalógusfüggvények stringargumentjeit. Ha SQL_TRUE, akkor a katalógusfüggvények string argumentumát azonosítóként kezeljük. Az ügy nem jelentős. Nem diferált sorok esetén a meghajtó eltávolítja a hátsó tereket, és a sort nagybetűkre hajtja. A diferitált stringek esetén a driver eltávolítja az első vagy hátsó tereket, és szó szerint azt veszi el, ami a határjelzők között van. Ha ezek közül az egyik érv null mutatóra van állítva, a függvény SQL_ERROR és SQLSTATE HY009-et (null mutató érvénytelen használata) adja vissza. Ha SQL_FALSE, akkor a katalógusfüggvények stringargumentjeit nem kezelik azonosítóként. Az ügy jelentős. Tartalmazhatnak stringkereső mintát, vagy nem, az érveléstől függően. Az alapértelmezett érték SQL_FALSE. Az SQLTablesTableType argumentumát, amely értéklistát vesz fel, nem érinti ez az attribútum. SQL_ATTR_METADATA_ID állítható kijelentés szinten is. (Ez az egyetlen kapcsolati attribútum, amely egyben kijelentés attribútum.) További információ: A Catalog Functions argumentumai. |
| SQL_ATTR_ODBC_CURSORS (ODBC 2.0) | Egy SQLULEN érték, amely meghatározza, hogyan használja a Driver Manager az ODBC kurzorkönyvtárat: SQL_CUR_USE_IF_NEEDED = A Driver Manager csak akkor használja az ODBC kurzorkönyvtárat, ha szükséges. Ha az illesztőprogram támogatja az SQLFetchScroll SQL_FETCH_PRIOR opcióját, akkor a Driver Manager használja az illesztőprogram görgetési képességét. Egyébként az ODBC kurzorkönyvtárat használja. SQL_CUR_USE_ODBC = A Driver Manager az ODBC kurzorkönyvtárat használja. SQL_CUR_USE_DRIVER = A Driver Manager használja az illesztőprogram görgetési képességét. Ez az alapértelmezett beállítás. További információért az ODBC kurzorkönyvtárról lásd az F mellékletet: ODBC Cursor Library. Figyelem: A kurzorkönyvtárat a jövőbeli Windows verzióban eltávolítják. Ne használja ezt a funkciót az új fejlesztési munkában, és tervezze meg a funkciót jelenleg használó alkalmazások módosítását. A Microsoft az illesztőprogram kurzorfunkciójának használatát javasolja. |
| SQL_ATTR_PACKET_SIZE (ODBC 2.0) | Egy SQLUINTEGER érték, amely megadja a hálózati csomag méretét bájtokban.
Megjegyzés: Sok adatforrás vagy nem támogatja ezt az opciót, vagy csak vissza tudja adni, de nem állítja be a hálózati csomag méretét. Ha a megadott méret meghaladja a maximális csomagméretet vagy kisebb, mint a minimális csomagméret, az illezőprogram ezt az értéket helyettesíti, és visszaadja az SQLSTATE 01S02-t (opció értéke megváltoztatva). Ha az alkalmazás a csomagméretet állítja be, miután már létrejött a kapcsolat, az illesztőprogram visszaadja a SQLSTATE HY011-et (az attribútumot most nem lehet beállítani). |
| SQL_ATTR_QUIET_MODE (ODBC 2.0) | Egy ablakkilincs (HWND). Ha az ablak fogantyúja null mutató, az illesztőprogram nem jelenít meg semmilyen párbeszédablakot. Ha az ablak fogantyúja nem null mutató, akkor az alkalmazás szülőablak fogantyújának kell lennie. Ez az alapértelmezett beállítás. A meghajtó ezt a fogantyút használja a párbeszédablakok megjelenítésére. Megjegyzés: A SQL_ATTR_QUIET_MODE kapcsolat attribútum nem vonatkozik az SQLDriverConnect által megjelenített párbeszédablakokra. |
| SQL_ATTR_TRACE (ODBC 1.0) | Egy SQLUINTEGER érték, amely megmondja a Driver Managernek, hogy végezzen-e a követést: SQL_OPT_TRACE_OFF = A követés (az alapértelmezett) SQL_OPT_TRACE_ON = Követés Amikor a követés be van kapcsolva, a Driver Manager minden ODBC függvényhívást megír a trace fájlba. Megjegyzés: Ha a követés be van kapcsolva, a Driver Manager bármely függvényből vissza tudja adni a SQLSTATE IM013 (Trace file error) fájlt. Egy alkalmazás egy trace fájlt ad meg a SQL_ATTR_TRACEFILE opcióval. Ha a fájl már létezik, a Driver Manager hozzáadódik hozzá. Ellenkező esetben létrehozza a fájlt. Ha a követés be van kapcsolva, és nincs kijelölt trace fájl, akkor a Driver Manager az SQL fájlba ír. BEJELENTKEZÉS a gyökérkönyvtárba. Egy alkalmazás beállíthatja az ODBCSharedTraceFlag változót, hogy dinamikusan lehessen követni. Ezután minden jelenleg futó ODBC alkalmazás esetén engedélyezett a követés. Ha egy alkalmazás kikapcsolja a követést, akkor csak arra az alkalmazásra kapcsolja ki. Ha a rendszer információjában a Trace kulcsszó 1-re van állítva, amikor egy alkalmazás SQL_HANDLE_ENV HandleType Handle-t hív, akkor a követés minden handle esetén engedélyezett. Csak az az alkalmazásnál engedélyezett, amely SQLAllocHandle-t hívja. Az SQLSetConnectAttr hívása SQL_ATTR_TRACE attribútummal nem követeli meg, hogy a ConnectionHandle érve érvényes legyen, és nem adja vissza SQL_ERROR, ha a ConnectionHandle NULL. Ez az attribútum minden kapcsolatra érvényes. |
| SQL_ATTR_TRACEFILE (ODBC 1.0) | Egy nullvéges karakterlánc, amely tartalmazza a trace fájl nevét. A SQL_ATTR_TRACEFILE attribútum alapértelmezett értékét a TraceFile kulcsszavaval van megadva a rendszerinformációban. További információért lásd az ODBC Subkey-t. Az SQLSetConnectAttr hívása SQL_ATTR_TRACEFILE attribútummal nem igényel érvényes a ConnectionHandle argumentumot, és nem adja vissza SQL_ERROR, ha a ConnectionHandle érvénytelen. Ez az attribútum minden kapcsolatra érvényes. |
| SQL_ATTR_TRANSLATE_LIB (ODBC 1.0) | Egy null-végű karakterlánc, amely tartalmazza egy könyvtár nevét, amely tartalmazza az SQLDriverToDataSource és SQLDataSourceToDriver funkciókat, amelyeket az illezőprogram elér olyan feladatok végrehajtásához, mint például a karakterhalmaz fordítása. Ez az opció csak akkor adható meg, ha az illesztőprogram csatlakozott az adatforráshoz. Ennek az attribútumnak a beállítása a kapcsolatokon belül megmarad. További információért az adatok fordításáról lásd: Fordítási DLL-ek és Fordítási DLL funkció referencia. |
| SQL_ATTR_TRANSLATE_OPTION (ODBC 1.0) | Egy 32 bites zászlóérték, amelyet a fordítási DLL-hez továbbítanak. Ez az attribútum csak akkor határozható meg, ha az illesztőprogram csatlakozott az adatforráshoz. Az adatok fordításáról információért lásd: Fordítási DLL-ek. |
| SQL_ATTR_TXN_ISOLATION (ODBC 1.0) | Egy 32 bites bitmaszk, amely a jelenlegi kapcsolat tranzakciós izolációs szintjét állítja be. Az alkalmazásnak az SQLEndTran-t kell hívnia, hogy minden nyitott tranzakciót elkötelezzen vagy visszafordítson egy kapcsolaton, mielőtt ezzel az opcióval az SQLSetConnectAttr-t hívja. Az ValuePtr érvényes értékei úgy határozható meg, hogy az SQLGetInfo-t hívjuk, az InfoType pedig SQL_TXN_ISOLATION_OPTIONS-vel. A tranzakciós izolációs szintek leírásáért lásd az SQLGetInfo és a Transaction Isolation Levels SQL_DEFAULT_TXN_ISOLATION információtípusának leírását. |
[1] Ezeket a függvényeket csak akkor lehet aszinkronosan nevezni, ha a leíró implementációs leíró, nem pedig alkalmazás-leíró.
Kódpélda
Lásd SQLConnect.
Kapcsolódó funkciók
| Információ erről: | Nézze |
|---|---|
| Kiosztás egy fogantyú | SQLAllocHandle függvény |
| Kapcsolati attribútum beállításának visszaadása | SQLGetConnectAttr függvény |