SQLConnect-függvény

Megfelelőség
Bevezetett verzió: ODBC 1.0 szabványmegfelelőség: ISO 92

Összefoglalás
Az SQLConnect kapcsolatot teremt egy illesztőgéphez és egy adatforráshoz. A kapcsolat kezelő minden adatforráshoz kapcsolódó információ tárolására utal, beleértve az állapotot, tranzakciós állapotot és hibainformációkat.

Syntax

  
SQLRETURN SQLConnect(  
     SQLHDBC        ConnectionHandle,  
     SQLCHAR *      ServerName,  
     SQLSMALLINT    NameLength1,  
     SQLCHAR *      UserName,  
     SQLSMALLINT    NameLength2,  
     SQLCHAR *      Authentication,  
     SQLSMALLINT    NameLength3);  

Arguments

ConnectionHandle
[Bemenet] Kapcsolati leíró.

Kiszolgálónév
[Bemenet] Adatforrás név. Előfordulhat, hogy az adatok ugyanazon a számítógépen találhatók, mint a program, vagy egy másik számítógépen, valahol egy hálózaton. Arról, hogyan választja ki egy alkalmazás az adatforrást, lásd: Adatforrás vagy driver kiválasztása.

NameLength1
[Bemenet] A *ServerName hossza karakterekben.

UserName
[Bemenet] Felhasználói azonosító.

NameLength2
[Bemenet] A *UserName hossza karakterekben.

Authentication
[Bemenet] Hitelesítési string (általában a jelszó).

NameLength3
[Bemenet] *Hitelesítés karakterben történő hitelesítés hossza.

Returns

SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR, SQL_INVALID_HANDLE vagy SQL_STILL_EXECUTING.

Diagnostics

Amikor az SQLConnect SQL_ERROR vagy SQL_SUCCESS_WITH_INFO értéket ad vissza, egy hozzárendelt SQLSTATE érték elérhető SQLGetDiagRec hívásával, amely egy SQL_HANDLE_DBC HandleType és egy ConnectionHandleHandle nevű HandleType segítségével szól. Az alábbi táblázat felsorolja az SQLConnect á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 Error 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 illezser nem támogatta az SQLSetConnectAttrValuePtr argumentumának megadott értékét, és hasonló értéket cserélt le. (A függvény SQL_SUCCESS_WITH_INFO ad vissza.)
08001 Az ügyfél nem tudja kapcsolatot teremteni A meghajtó nem tudott kapcsolatot teremteni az adatforrással.
08002 Használatban lévő kapcsolatnév (DM) A megadott ConnectionHandle már használódott egy adatforráshoz való kapcsolat létrehozására, és a kapcsolat még nyitva volt, vagy a felhasználó böngészett egy kapcsolatot.
08004 A szerver elutasította a kapcsolatot Az adatforrás elutasította a kapcsolat létrehozását megvalósítás által meghatározott okok miatt.
08S01 Kommunikációs kapcsolat hibája A meghajtó és az adatforrás közötti kommunikációs kapcsolat, amelyhez az illesztőgép csatlakozni próbált, meghibásodott, mielőtt a funkció befejezte a feldolgozást.
28000 Érvénytelen jogosultsági specifikáció Az argumentum UserName vagy az argumentum Authentication értéke megsértette az adatforrás által meghatározott korlátozásokat.
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 (DM) A Driver Manager nem tudott olyan memóriát osztani le, amely szükséges a funkció végrehajtásához vagy befejezéséhez.
HY008 Művelet megszakítva Az aszinkron feldolgozás engedélyezett volt a ConnectionHandle számára. Az SQLConnect függvényt hívták meg, és mielőtt befejezte volna a végrehajtást, az SQLCancelHandle függvényt hívták meg a ConnectionHandle-en, majd az SQLConnect függvényt ismét a ConnectionHandle-en.

Vagy az SQLConnect függvényt hívták, és mielőtt befejezte volna a végrehajtást, az SQLCancelHandle meghívása a ConnectionHandle-en egy másik szálból egy többszálas alkalmazásban.
HY010 Függvényütemezési hiba (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.
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) Az NameLength1, NameLength2 vagy NameLength3 argumentumok értéke kevesebb volt, mint 0, de nem egyenlő SQL_NTS-vel.

(DM) Az argumentum NameLength1 értéke meghaladta az adatforrás név maximális hosszát.
HYT00 Az időtúllépés lejárt A lekérdezési időkorlát lejárt, mielőtt az adatforráshoz való csatlakozás befejeződött volna. Az időtúli időszakot az SQLSetConnectAttr, SQL_ATTR_LOGIN_TIMEOUT segítségével állítják be.
HY114 Az illesztőprogram nem támogatja a kapcsolati szintű aszinkron függvény végrehajtását (DM) Az alkalmazás engedélyezte az aszinkron műveletet a kapcsolat fogantyúján, mielőtt létrehozta a kapcsolatot. Azonban az illesztőprogram nem támogatja aszinkron műveleteket a kapcsolati fogantyún.
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) Az adatforrás nevében megadott illezőprogram nem támogatja a funkciót.
IM002 Adatforrás nem talált, és alapértelmezett illesztőprogram nem volt megadva. (DM) Az argumentumban megadott adatforrás név, a ServerName nem található meg a rendszerinformációkban, és nem volt alapértelmezett illesztőprogram-specifikáció.
IM003 A megadott illezőprogramhoz nem lehetett csatlakozni (DM) Az adatforrás specifikációjában szereplő meghajtót nem találták meg, vagy más okból nem lehetett kapcsolódni hozzá.
IM004 Driver SQLAllocHandle SQL_HANDLE_ENV hibás (DM) Az SQLConnect során a Driver Manager hívta az illesztőprogram SQLAllocHandle funkcióját SQL_HANDLE_ENV HandleType-vel , és az illesztőprogram hibát adott vissza.
IM005 Driver SQLAllocHandle SQL_HANDLE_DBC hibás (DM) Az SQLConnect során a Driver Manager az illesztőprogram SQLAllocHandle funkcióját hívta SQL_HANDLE_DBC HandleType-vel , és az illesztőprogram hibát adott vissza.
IM006 Driver's SQLSetConnectAttr hibás Az SQLConnect során a Driver Manager hívta az illesztőprogram SQLSetConnectAttr funkcióját, és az illesztőprogram hibát adott vissza. (A függvény SQL_SUCCESS_WITH_INFO ad vissza.)
IM009 Nem tudok csatlakozni a fordítási DLL-hez Az illezőgép nem tudott csatlakozni a forráshoz megadott fordítási DLL-hez.
IM010 Az adatforrás neve túl hosszú (DM) *A szervernév hosszabb volt, mint SQL_MAX_DSN_LENGTH karakter.
IM014 A megadott DSN architektúrabeli eltérést tartalmaz az illesztőprogram és az alkalmazás között (DM) 32 bites alkalmazás DSN-t használ, amely egy 64 bites illezőprogramhoz csatlakozik; vagy fordítva.
IM015 Driver's SQLConnect on SQL_HANDLE_DBC_INFO_HANDLE hibás Ha egy illesztőprogram SQL_ERROR visszaad, a Driver Manager visszaadja SQL_ERROR az alkalmazásnak, és a kapcsolat meghibásodik.

További információért SQL_HANDLE_DBC_INFO_TOKEN lásd: Fejlődés Connection-Pool tudatosság egy ODBC meghajtóban.
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 Ha az illesztőprogram nem támogatja az aszinkron értesítést, nem lehet beállítani SQL_ATTR_ASYNC_DBC_EVENT vagy SQL_ATTR_ASYNC_DBC_RETCODE_PTR.

Comments

Arról, miért használja egy alkalmazás SQLConnect-et, lásd: Kapcsolat SQLConnect-vel.

A Driver Manager nem csatlakozik egy driverhez, amíg az alkalmazás nem hív egy függvényt (SQLConnect, SQLDriverConnect vagy SQLBrowseConnect) az illesztőprogramhoz. Addig a Driver Manager saját kezelőfelületekkel dolgozik és kezeli a kapcsolati információkat. Amikor az alkalmazás kapcsolati függvényt hív, az Driver Manager ellenőrzi, hogy jelenleg csatlakozik-e egy illezőgéphez a megadott ConnectionHandle esetében:

  • Ha egy illesztőprogramhoz nincs csatlakoztatva, a Driver Manager csatlakozik hozzá, és az SQLAllocHandle-t hívja SQL_HANDLE_ENV HandleType-vel , SQLAllocHandle-t SQL_HANDLE_DBC HandleType-vel , SQLSetConnectAttr-t (ha az alkalmazás bármilyen kapcsolati attribútumot megad), valamint az illesztőprogramban lévő kapcsolati funkcióval. A Driver Manager visszaadja az SQLSTATE IM006-ot (az illezser SQLSetConnectOption hibásodott), és SQL_SUCCESS_WITH_INFO a csatlakozási függvényre, ha az illesztőprogram SQLSetConnectAttr hibát mutat be. További információért lásd: Adatforráshoz vagy meghajtóhoz való csatlakozás.

  • Ha a megadott illezőgép már csatlakozik a ConnectionHandle-en, a Driver Manager csak a csatlakozási funkciót hívja az illesztőprogramban. Ebben az esetben a meghajtónak biztosítania kell, hogy a ConnectionHandle összes kapcsolati attribútumja megőrizze aktuális beállításait.

  • Ha egy másik illesztőprogramhoz csatlakozik, a Driver Manager a SQLFreeHandle-t hívja SQL_HANDLE_DBC HandleType-val , majd ha nincs más illesztőprogramhoz csatlakoztatva abban a környezetben, akkor a SQLFreeHandle-t hívja SQL_HANDLE_ENV HandleType-jével a csatlakoztatott driverben, majd leválasztja azt az illesztőprogramot. Ezután ugyanazokat a műveleteket végzi, mint amikor egy meghajtóhoz nincs csatlakoztatva.

Ezután a meghajtó kiosztja a fogantyúkat és inicializálja magát.

Amikor az alkalmazás meghívja az SQLDisconnectet, az Illesztőprogram-kezelő meghívja az SQLDisconnectet az illesztőprogramban. Azonban nem kapcsolja le a meghajtót. Ez megtartja az illesztőprogramot a memóriában azoknál az alkalmazásoknál, amelyek ismételten csatlakoznak és leválasztják az adatforrást. Amikor az alkalmazás SQL_HANDLE_DBC HandleType-valhívja az SQLFreeHandle-t, a Driver Manager a SQLFreeHandle-t SQL_HANDLE_DBC HandleType-jével, majd SQLFreeHandle-t SQL_HANDLE_ENV HandleType-jével a driverben, majd lecsatlakoztatja a drivert.

Egy ODBC alkalmazás több kapcsolatot is létrehozhat.

Versenyzővezetői irányelvek

A *ServerName tartalma befolyásolja, hogyan működik együtt a Driver Manager és egy driver az adatforráshoz való kapcsolat létrehozásában.

  • Ha a *ServerName érvényes adatforrás nevet tartalmaz, a Driver Manager megtalálja a megfelelő adatforrás specifikációt a rendszerinformációk között, és csatlakozik a hozzá tartozó illesztőprogramhoz. A Driver Manager minden SQLConnect argumentumot továbbít az illesztővezetőnek.

  • Ha az adatforrás neve nem található, vagy a ServerName null mutató, a Driver Manager megtalálja az alapértelmezett adatforrás specifikációt, és csatlakozik a hozzá tartozó illesztőprogramhoz. A Driver Manager módosítatlanul továbbítja a UserName és Authentication argumentumokat, valamint a "DEFAULT" jelet a ServerName argumentumhoz.

  • Ha a ServerName érve "DEFAULT", akkor a Driver Manager megtalálja az alapértelmezett adatforrás specifikációt, és csatlakozik a hozzá tartozó illesztőprogramhoz. A Driver Manager minden SQLConnect argumentumot továbbít az illesztővezetőnek.

  • Ha az adatforrás neve nem található meg, vagy a ServerName null mutató, és az alapértelmezett adatforrás specifikáció nem létezik, akkor a Driver Manager SQL_ERROR SQLSTATE IM002-vel (adatforrás név nem található meg és alapértelmezett illesztőprogram nincs megadva).

Miután a Driver Manager csatlakozott hozzá, az illesztőprogram megtalálhatja a megfelelő adatforrás specifikációját a rendszerinformációkban, és a specifikációból származó illesztő-specifikus információkat felhasználva kiegészítheti a szükséges kapcsolati információkat.

Ha az adatforrás rendszerinformációiban egy alapértelmezett fordítókönyvtár van megadva, az illesztőprogram csatlakozik hozzá. Egy másik fordító könyvtárhoz csatlakoztatható az SQLSetConnectAttr hívásával a SQL_ATTR_TRANSLATE_LIB attribútummal. Fordítási opció megadható úgy, hogy az SQLSetConnectAttr hívása a SQL_ATTR_TRANSLATE_OPTION attribútummal szól.

Ha egy illesztőprogram támogatja az SQLConnect-et, akkor a meghajtó rendszerinformációinak kulcsszószekciójában tartalmaznia kell a ConnectFunctions kulcsszót, amelynek első karaktere "Y" lesz.

Kapcsolatkészlet-kezelés

A kapcsolat pooling lehetővé teszi, hogy az alkalmazás újrahasznosítsa a már létrehozott kapcsolatot. Amikor a kapcsolat pooling engedélyezett és az SQLConnect hívása történik, a Driver Manager megpróbálja létrehozni a kapcsolatot egy olyan kapcsolat segítségével, amely egy olyan környezetben található kapcsolati készlet része, amelyet a kapcsolat poolingra kijelöltek. Ez a környezet egy megosztott környezet, amelyet minden alkalmazás használ, amely használja a pool kapcsolatait.

A kapcsolat pooling engedélyezése a környezet kiosztása előtt az SQLSetEnvAttr hívásával történik, hogy SQL_ATTR_CONNECTION_POOLING SQL_CP_ONE_PER_DRIVER-re állítsuk be (ami egy meghajtónként maximum egy poolot jelöl meg) vagy SQL_CP_ONE_PER_HENV (amely környezetenként maximum egy poolot jelöl meg). Az SQLSetEnvAttr ebben az esetben a EnvironmentHandle null-ra állítva hívják, ami az attribútumot folyamatszintű attribútummá teszi. Ha SQL_ATTR_CONNECTION_POOLING SQL_CP_OFF-re van állítva, a kapcsolat poolingolása letiltott.

A kapcsolat pooling engedélyezése után az SQLAllocHandle egy SQL_HANDLE_ENV HandleType segítségével meghívják a környezet kijelölésére. A hívás által kijelölt környezet megosztott környezet, mivel a kapcsolat pooling engedélyezve van. Azonban a használt környezetet csak akkor határozzák meg, ha az SQLAllocHandle egy SQL_HANDLE_DBC HandleType segítségével meghívjuk.

Az SQLAllocHandle egy SQL_HANDLE_DBC HandleType segítségével hívják meg a kapcsolat kijelölésére. A Driver Manager megpróbál találni egy meglévő megosztott környezetet, amely megfelel az alkalmazás által beállított környezeti attribútumoknak. Ha ilyen környezet nem létezik, akkor az implicit megosztott környezetként jön létre. Ha találunk egy megfelelő megosztott környezetet, a környezeti handle visszakerül az alkalmazáshoz, és annak hivatkozási száma növekedik.

Azonban a használt kapcsolatot csak akkor határozzák meg, ha az SQLConnect meghívása történik. Ekkor a Driver Manager megpróbál találni egy meglévő kapcsolatot a kapcsolati poolban, amely megfelel az alkalmazás által kért kritériumoknak. Ezek a kritériumok közé tartoznak az SQLConnect hívásban kért kapcsolati opciók (a ServerName, UserName és Authentication kulcsszavak értékei), valamint az SQLAllocHandle SQL_HANDLE_DBC HandleType meghívása óta beállított kapcsolat attribútumok. A Driver Manager ezeket a kritériumokat ellenőrzi a megfelelő kapcsolati kulcsszavakkal és attribútumokkal a poolban lévő kapcsolatokban. Ha találnak egyezést, a medencében lévő kapcsolatot használják. Ha nem talál egyezést, új kapcsolat jön létre.

Ha a SQL_ATTR_CP_MATCH környezeti attribútumot SQL_CP_STRICT_MATCH-re állították, akkor a párosításnak pontosnak kell lennie ahhoz, hogy a poolban lévő kapcsolatot használhassanak. Ha a SQL_ATTR_CP_MATCH környezet attribútuma SQL_CP_RELAXED_MATCH-re van beállítva, akkor az SQLConnect hívásában lévő kapcsolati opcióknak egyezniük kell, de nem minden kapcsolati attribútumnak kell egyeznie.

Az alábbi szabályokat alkalmazzák, ha egy kapcsolat attribútum, amelyet az alkalmazás az SQLConnect meghívása előtt állított be, nem egyezik meg a poolban lévő kapcsolat kapcsolat attribútumával:

  • Ha a kapcsolat attribútumát be kell állítani a kapcsolat létrehozása előtt:

    Ha SQL_ATTR_CP_MATCH SQL_CP_STRICT_MATCH, akkor a SQL_ATTR_PACKET_SIZE a pooled kapcsolatban azonosnak kell lennie az alkalmazás által adott attribútumhalmazsal. Ha SQL_CP_RELAXED_MATCH, akkor SQL_ATTR_PACKET_SIZE értékei eltérhetnek.

    A SQL_ATTR_LOGIN_VALUE értéke nem befolyásolja a párosítást.

  • Ha a kapcsolat attribútuma beállítható a kapcsolat előtt vagy után:

    Ha az alkalmazás nem állította be a kapcsolat attribútumát, hanem a poolban lévő kapcsolaton állította be, és van alapértelmezett tulajdonság, akkor a csatlakozó attribútumot visszaállítják az alapértelmezettre, és egyezést hirdetnek. Ha nincs alapértelmezett opció, a közös kapcsolatot nem tekintik egyezésnek.

    Ha az alkalmazás beállította a kapcsolat attribútumot, de a poolban lévő kapcsolaton nem állították be, akkor a poolban lévő kapcsolat attribútumát az alkalmazás által állított attribútumra változtatják, és egyezést hirdetnek.

    Ha az alkalmazás beállította a kapcsolat attribútumot, és a poolban lévő kapcsolaton is beállították, de az értékek eltérnek, akkor az alkalmazás kapcsolat attribútumának értékét használják, és egyezést hirdetnek.

  • Ha az illesztőprogram-specifikus kapcsolati attribútumok értékei nem azonosak, és SQL_ATTR_CP_MATCH SQL_CP_STRICT_MATCH-re van állítva, akkor a poolban lévő kapcsolatot nem használják.

Amikor az alkalmazás az SQLDisconnectet hívja a megszakításra, a kapcsolat visszakerül a kapcsolati poolba, és újrahasználható.

A kapcsolat pooling teljesítményének optimalizálása

Elosztott tranzakciók esetén a kapcsolat pooling teljesítményének optimalizálása lehetséges SQL_DTC_TRANSITION_COST használatával, amely SQLUINTEGER bitmaszk. Az említett átmenetek a kapcsolati attribútum SQL_ATTR_ENLIST_IN_DTC 0-ról nulláról nem nullára való átmenetei, illetve fordítva. Ez egy olyan kapcsolat, amely elosztott tranzakcióban nem szerepel egy elosztott tranzakcióban való bejegyzett állapotból egy elosztott tranzakcióba való belépésre, és fordítva. Attól függően, hogyan valósította meg a sofőr a besorolást (a kapcsolati attribútum beállítása SQL_ATTR_ENLIST_IN_DTC), ezek az átmenetek drágák lehetnek, ezért a legjobb teljesítmény érdekében kerülni kell őket.

A meghajtó által visszaadott érték az alábbi bitek bármely kombinációját tartalmazza:

  • SQL_DTC_ENLIST_EXPENSIVE, ha beállítva állítva, azt feltételezi, hogy a nulláról nulláról nem nullára való átmenet jelentősen drágább, mint a nulláról egy másik nulla értékre való átmenet (egy korábban regisztrált kapcsolat bevonása a következő tranzakcióba).

  • SQL_DTC_UNENLIST_EXPENSIVE, ha beállítva állíta, azt jelenti, hogy a nulláról nullára való átmenet jelentősen drágább, mint egy olyan kapcsolat használata, amelynek SQL_ATTR_ENLIST_IN_DTC attribútuma már nullára van állítva.

Van egy teljesítmény és kapcsolathasználat közötti kompromisszum. Ha egy driver jelezi, hogy ezek közül egy vagy több átmenet költséges, a driver manager connection pooler erre reagál azzal, hogy több kapcsolatot tart a poolban. A pool néhány kapcsolata nem tranzakciós használatra preferált, míg néhány tranzakciós használatra. Ha azonban a meghajtó jelezi, hogy ezek az átmenetek nem drágák, kevesebb kapcsolat használható, esetleg váltakozva a nem tranzakciós és tranzakciós használat között.

Azok a driverek, amelyek nem támogatják SQL_ATTR_ENLIST_IN_DTC, nem kell támogatniuk SQL_DTC_TRANSITION_COST. Azoknál a drivereknél, amelyek SQL_ATTR_ENLIST_IN_DTC-t támogatnak, de nem SQL_DTC_TRANSITION_COST, feltételezik, hogy az átmenetek nem drágák, mintha az illesztőprogram 0-t (bit nélkül) adna vissza ehhez az értékhez.

Bár SQL_DTC_TRANSITION_COST az ODBC 3.5-ben jelent meg, egy ODBC 2. Az X driver is támogathatja, mert a driver manager függetlenül lekérdezi ezeket az információkat, függetlenül a meghajtó verziótól.

Kódpélda

A következő példában egy alkalmazás a környezetet és a kapcsolati handle-eket osztja ki. Ezután csatlakozik a SalesOrders adatforráshoz a JohnS felhasználóazonosítóval és a Sesame jelszóval, és feldolgozza az adatokat. Amikor befejezi az adatfeldolgozást, elválik az adatforrástól, és felszabadítja a fogantyúkat.

// SQLConnect_ref.cpp  
// compile with: odbc32.lib  
#include <windows.h>  
#include <sqlext.h>  
  
int main() {  
   SQLHENV henv;  
   SQLHDBC hdbc;  
   SQLHSTMT hstmt;  
   SQLRETURN retcode;  
  
   SQLCHAR * OutConnStr = (SQLCHAR * )malloc(255);  
   SQLSMALLINT * OutConnStrLen = (SQLSMALLINT *)malloc(255);  
  
   // Allocate environment handle  
   retcode = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);  
  
   // Set the ODBC version environment attribute  
   if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) {  
      retcode = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0);   
  
      // Allocate connection handle  
      if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) {  
         retcode = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);   
  
         // Set login timeout to 5 seconds  
         if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) {  
            SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT, (SQLPOINTER)5, 0);  
  
            // Connect to data source  
            retcode = SQLConnect(hdbc, (SQLCHAR*) "NorthWind", SQL_NTS, (SQLCHAR*) NULL, 0, NULL, 0);  
  
            // Allocate statement handle  
            if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) {  
               retcode = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);   
  
               // Process data  
               if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) {  
                  SQLFreeHandle(SQL_HANDLE_STMT, hstmt);  
               }  
  
               SQLDisconnect(hdbc);  
            }  
  
            SQLFreeHandle(SQL_HANDLE_DBC, hdbc);  
         }  
      }  
      SQLFreeHandle(SQL_HANDLE_ENV, henv);  
   }  
}  
Információ erről: Nézze
Kiosztás egy fogantyú SQLAllocHandle függvény
Az adatforráshoz való csatlakozáshoz szükséges értékek felfedezése és felsorolása SQLBrowseConnect függvény
Adatforrásról való kikapcsolás SQLDisconnect függvény
Adatforráshoz való csatlakozás egy kapcsolati karakterlánc vagy párbeszédablak segítségével SQLDriverConnect függvény
Kapcsolati attribútum beállításának visszaadása SQLGetConnectAttr függvény
Kapcsolati attribútumot beállítás SQLSetConnectAttr függvény

Lásd még

ODBC API-referencia
ODBC-fejlécfájlok