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
SQLSetEnvAttr attribútumokat állít be, amelyek a környezetek aspektusait szabályozzák.
Syntax
SQLRETURN SQLSetEnvAttr(
SQLHENV EnvironmentHandle,
SQLINTEGER Attribute,
SQLPOINTER ValuePtr,
SQLINTEGER StringLength);
Arguments
EnvironmentHandle
[Bemenet] Környezet kezelése.
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 32 bites egész érték lesz, vagy egy nullvéges karakterláncra mutató mutató.
StringLength
[Bemenet] Ha a ValuePtr egy karakterláncra vagy bináris pufferre mutat, ennek az argumentumnak a *ValuePtr hosszának kell lennie. Karakterlánc adatok esetén ennek az argumentumnak tartalmaznia kell a sztróban lévő bájtok számát.
Ha a ValuePtr egész szám, akkor a StringLength-et figyelmen kívül hagyjuk.
Returns
SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR vagy SQL_INVALID_HANDLE.
Diagnostics
Amikor az SQLSetEnvAttr SQL_ERROR vagy SQL_SUCCESS_WITH_INFO értéket ad vissza, egy hozzárendelt SQLSTATE értéket lehet megszerezni SQLGetDiagRec hívásával, amely egy SQL_HANDLE_ENV HandleType és egy EnvironmentHandle Handle nevű Handle-jével. Az alábbi táblázat felsorolja az SQLSetEnvAttr által általában visszaadott SQLSTATE értékeket, és mindegyiket elmagyarázza ezen függvény kontextusában; 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. Ha egy illesztőprogram nem támogatja a környezeti attribútumot, a hiba csak a csatlakozási idő alatt tér vissza.
| 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.) |
| 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. |
| HY009 | Érvénytelen null mutató használata | Az Attribútumok érve egy környezeti attribútumot azonosított, amely string értéket igényelt, míg a ValuePtr érve null mutató volt. |
| HY010 | Függvényütemezési hiba | (DM) A EnvironmentHandle egy kapcsolati handle lett kijelölve. (DM) SQL_ATTR_ODBC_VERSION nem volt beállítva SQLSetEnvAttr-rel , és az attribútum nem egyenlő SQL_ATTR_ODBC_VERSION-vel. Nem kell SQL_ATTR_ODBC_VERSION kifejezetten beállítani, ha SQLAllocHandleStd-t használsz. |
| 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. |
| HY090 | Érvénytelen sztring vagy puffer hossza | A StringLength érv kevesebb volt, mint 0, 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. |
| 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 környezeti attribútumot adott az illesztőprogram által támogatott ODBC verzióhoz, de az illesztőprogram nem támogatta. (DM) Az attribútum érv SQL_ATTR_OUTPUT_NTS, a ValuePtr pedig SQL_FALSE. |
Comments
Egy alkalmazás csak akkor hívhatja az SQLSetEnvAttr-t , ha nincs csatlakoztatva a környezeten. Az alkalmazás által sikeresen beállított környezeti attribútumok fennmaradnak, amíg az SQLFreeHandle meg nem hívja a környezetet. Az ODBC 3.x-ben egyszerre több környezeti handle is kiosztható.
A ValuePtr által állított információ formátuma a megadott attribútumtól függ. Az SQLSetEnvAttr két különböző formátumban fogadja az attribútum-információkat: nullvéges karakterlánc vagy 32 bites egész érték. Mindegyik formátuma az attribútum leírásában szerepel.
Nincsenek illesztőgép-specifikus környezeti attribútumok.
A kapcsolati attribútumokat nem lehet beállítani SQLSetEnvAttr hívással. Ha ezt megpróbálod, az SQLSTATE HY092 (Invalid attribútum/opcióazonosító) jelenik meg.
| Attribútum | ValuePtr tartalma |
|---|---|
| SQL_ATTR_CONNECTION_POOLING (ODBC 3.8) | Egy 32 bites SQLUINTEGER érték, amely lehetővé teszi vagy tiltja a kapcsolati poolingot a környezeti szinten. A következő értékek kerülnek felhasználásra: SQL_CP_OFF = A kapcsolati csoportosítás ki van kapcsolva. Ez az alapértelmezett beállítás. SQL_CP_ONE_PER_DRIVER = Minden illesztőprogramhoz egyetlen csatlakozási pool támogatott. Minden kapcsolat egy csoportban egy driverhez van kötve. SQL_CP_ONE_PER_HENV = Minden környezethez egyetlen kapcsolati pool támogatott. Minden kapcsolat egy medencében egy környezethez kapcsolódik. SQL_CP_DRIVER_AWARE = Használja a driver-pool tudatosság funkcióját, ha elérhető. Ha az illesztőprogram nem támogatja a kapcsolati pool tudatosságot, SQL_CP_DRIVER_AWARE figyelmen kívül hagyják, és SQL_CP_ONE_PER_HENV használják. További információ: Driver-Aware kapcsolatkészletezés. Olyan környezetben, ahol egyes illesztőprogramok támogatják, mások nem, SQL_CP_DRIVER_AWARE engedélyezhetik a kapcsolat-pool tudatosságot azoknál, amelyek támogatják a vezetőket, de ez egyenértékű, mint SQL_CP_ONE_PER_HENV azokon az illesztőautókban, amelyek nem támogatják a kapcsolat-pool tudatosság funkcióját. A kapcsolat pooling lehetővé teszi, ha az SQLSetEnvAttr hívása a SQL_ATTR_CONNECTION_POOLING attribútumot SQL_CP_ONE_PER_DRIVER vagy SQL_CP_ONE_PER_HENV-re állítja be. Ezt a hívást azelőtt kell kezdeményezni, hogy az alkalmazás lefoglalja azt a megosztott környezetet, amelyhez engedélyezni kell a kapcsolatkészletezést. Az SQLSetEnvAttr hívásában a környezeti handle nullra van állítva, ami SQL_ATTR_CONNECTION_POOLING folyamatszintű attribútumot eredményez. Miután a kapcsolat bilekezés engedélyezett, az alkalmazás egy implicit megosztott környezetet rendel el azzal, hogy az SQLAllocHandle-t hívja az InputHandle argumentummal SQL_HANDLE_ENV-re. Miután a kapcsolat pooling engedélyezett és egy alkalmazáshoz megosztott környezetet választottak, SQL_ATTR_CONNECTION_POOLING nem lehet visszaállítani abban a környezetben, mert az SQLSetEnvAttr-t null környezeti handle-rel hívják meg az attribútumok beállításakor. Ha ez az attribútumot akkor állítják be, amikor a kapcsolat pooling már engedélyezett egy megosztott környezeten, akkor az attribútum csak azokat a megosztott környezeteket érinti, amelyeket később kijelölnek. Lehetséges a kapcsolat poolingolás engedélyezése is egy környezeten. Figyeld meg a környezeti kapcsolati poolingolásról szóló alábbikat: - A kapcsolat pooling engedélyezése egy NULL handle alatt egy folyamatszintű attribútum. Ezt követően a kijelölt környezetek megosztott környezetet alkotnak, és átveszik a folyamatszintű kapcsolati pooling beállítást. - Miután egy környezetet kiosztottak, az alkalmazás továbbra is megváltoztathatja a kapcsolati pool beállításait. - Ha a környezeti kapcsolati pooling engedélyezve van, és a kapcsolat illesztőprogramja illesztőprogramot használ, akkor a környezet pooling előnyben részesíti. SQL_ATTR_CONNECTION_POOLING a Driver Managerben van megvalósítva. Egy illesztőprogramnak nem kell SQL_ATTR_CONNECTION_POOLING implementálnia. Az ODBC 2.0 és 3.0 alkalmazások beállíthatják ezt a környezeti attribútumot. További információ: ODBC-kapcsolatkészletezés. |
| SQL_ATTR_CP_MATCH (ODBC 3.0) | Egy 32 bites SQLUINTEGER érték, amely meghatározza, hogyan választanak kapcsolatot a kapcsolati poolból. Amikor az SQLConnect vagy SQLDriverConnect hívást hívják, a Driver Manager meghatározza, melyik kapcsolatot használják újra a poolból. A Driver Manager megpróbálja összeilleszteni a hívásban szereplő kapcsolati opciókat és az alkalmazás által beállított kapcsolati attribútumokat a pool kulcsszavaihoz és kapcsolati attribútumaihoz. Ennek az attribútumnak az értéke határozza meg a párosítási kritériumok pontosságának szintjét. Az alábbi értékeket használják ennek az attribútumnak az értékének beállításához: SQL_CP_STRICT_MATCH = Csak azokat a kapcsolatokat használják újra, amelyek pontosan megfelelnek a hívásban megadott kapcsolati opcióknak és az alkalmazás által beállított kapcsolati attribútumoknak. Ez az alapértelmezett beállítás. SQL_CP_RELAXED_MATCH = Használható olyan kapcsolatok, amelyek kapcsolati karakterlánc kulcsszavakkal egyeznek. A kulcsszavaknak egyezniük kell, de nem minden kapcsolati tulajdonságnak kell egyeznie. További információért arról, hogyan végzi a Driver Manager a párosítást egy pooled kapcsolathoz való csatlakozásnál, lásd: SQLConnect. A kapcsolatkészletezéssel kapcsolatos további információkért lásd az ODBC-kapcsolatkészletezést. |
| SQL_ATTR_ODBC_VERSION (ODBC 3.0) | Egy 32 bites egész szám, amely meghatározza, hogy bizonyos funkciók ODBC 2.x vagy ODBC 3.x viselkedést mutatnak-e. Az alábbi értékeket használják ennek az attribútumnak az értékének beállításához: SQL_OV_ODBC3_80 = A Driver Manager és az illezőgép a következő ODBC 3.8 viselkedést mutatják: - Az illesztőprogram visszaadja és elvárja az ODBC 3.x kódokat a dátum, idő és időbélyeg számára. - Az illesztőprogram ODBC 3.x SQLSTATE kódokat ad vissza, amikor SQLError, SQLGetDiagField vagy SQLGetDiagRec hívást kap. - A CatalogName argumentum egy SQLTables hívásban elfogad egy keresési mintát. - A Driver Manager támogatja a C adattípus bővíthetőségét. További információért a C adattípus bővíthetőségéről lásd: C adattípusok az ODBC-ben. További információért lásd: Mi újság az ODBC 3.8-ban. SQL_OV_ODBC3 = A Driver Manager és az illezőprogram a következő ODBC 3.x viselkedést mutatják: - Az illesztőprogram visszaadja és elvárja az ODBC 3.x kódokat a dátum, idő és időbélyeg számára. - Az illesztőprogram ODBC 3.x SQLSTATE kódokat ad vissza, amikor SQLError, SQLGetDiagField vagy SQLGetDiagRec hívást kap. - A CatalogName argumentum egy SQLTables hívásban elfogad egy keresési mintát. - A Driver Manager nem támogatja a C adattípus bővíthetőségét. SQL_OV_ODBC2 = A Driver Manager és az illesztőprogram a következő ODBC 2.x viselkedést mutat. Ez különösen hasznos egy ODBC 2.x alkalmazásnál, amely ODBC 3.x illezőgéppel dolgozik. - Az illesztőprogram visszaadja és elvárja az ODBC 2.x kódokat a dátum, idő és időbélyeg számára. - Az illesztőprogram ODBC 2.x SQLSTATE kódokat ad vissza, amikor SQLError, SQLGetDiagField vagy SQLGetDiagRec hívást kap. - A CatalogName argumentum egy SQLTables hívásban nem fogad el keresési mintát. - A Driver Manager nem támogatja a C adattípus bővíthetőségét. Az alkalmazásnak be kell állítania ezt a környezeti attribútumot, mielőtt bármilyen függvényt hívna, amelynek SQLHENV argumentum van, különben a hívás visszaadja az SQLSTATE HY010-et (Függvénysorozat hiba). A vezetőtől függ, hogy ezek a környezeti zászlók esetén van-e további viselkedés. - További információért lásd: Az alkalmazás ODBC verziójának deklarálása és viselkedési változások. |
| SQL_ATTR_OUTPUT_NTS (ODBC 3.0) | Egy 32 bites egész szám, amely meghatározza, hogyan ad vissza a meghajtó a string adatokat. Ha SQL_TRUE, az illesztőprogram null-terminált, a string adatot adja vissza. Ha SQL_FALSE, az illesztőprogram nem adja vissza null lezárt string-adatokat. Ez az attribútum alapértelmezettként SQL_TRUE. Egy hívás az SQLSetEnvAttr-hez , hogy SQL_TRUE-re állítsd SQL_SUCCESS-et. Az SQLSetEnvAttr-hez való hívás SQL_FALSE-ra állítva SQL_ERROR-et és SQLSTATE HYC00-et ad vissza (opcionális funkció nem implementálódott). |
Kapcsolódó funkciók
| Információ erről: | Nézze |
|---|---|
| Kiosztás egy fogantyú | SQLAllocHandle függvény |
| Környezeti attribútum beállításának visszaállítása | SQLGetEnvAttr Function |