SQLDisconnect-funktion
Efterlevnad
Version introducerad: ODBC 1.0 Standardefterlevnad: ISO 92
Sammanfattning
SQLDisconnect stänger anslutningen som är associerad med ett specifikt anslutningshandtag.
Syntax
SQLRETURN SQLDisconnect(
SQLHDBC ConnectionHandle);
Argument
ConnectionHandle
[Indata] Anslutningshandtag.
Returnerar
SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR, SQL_INVALID_HANDLE eller SQL_STILL_EXECUTING.
Diagnostik
När SQLDisconnect- returnerar SQL_ERROR eller SQL_SUCCESS_WITH_INFO kan ett associerat SQLSTATE-värde hämtas genom att anropa SQLGetDiagRec med en HandleType- av SQL_HANDLE_DBC och en Handle för ConnectionHandle. I följande tabell visas de SQLSTATE-värden som ofta returneras av SQLDisconnect- och förklarar var och en i kontexten för den här funktionen. notationen "(DM)" föregår beskrivningarna av SQLSTATEs som returneras av Driver Manager. Returkoden som är associerad med varje SQLSTATE-värde är SQL_ERROR, om inget annat anges.
SQLSTATE | Fel | Beskrivning |
---|---|---|
01000 | Allmän varning | Informationsmeddelande för drivrutinsspecifikt. (Funktionen returnerar SQL_SUCCESS_WITH_INFO.) |
01002 | Fel vid frånkoppling | Ett fel uppstod under frånkopplingen. Frånkopplingen lyckades dock. (Funktionen returnerar SQL_SUCCESS_WITH_INFO.) |
08003 | Anslutningen är inte öppen | (DM) Anslutningen som anges i argumentet ConnectionHandle inte var öppen. |
25000 | Ogiltigt transaktionstillstånd | En transaktion har bearbetats på den anslutning som angetts av argumentet ConnectionHandle. Transaktionen förblir aktiv. |
HY000 | Allmänt fel | Ett fel uppstod för vilket det inte fanns någon specifik SQLSTATE och för vilken ingen implementeringsspecifik SQLSTATE definierades. Felmeddelandet som returneras av SQLGetDiagRec i bufferten *MessageText beskriver felet och orsaken. |
HY001 | Fel vid minnesallokering | Drivrutinen kunde inte allokera minne som krävs för körning eller slutförande av funktionen. |
HY008 | Åtgärden avbröts | Asynkron bearbetning aktiverades för ConnectionHandle-. Funktionen anropades och innan den kördes SQLCancelHandle-funktionen anropades på ConnectionHandle-. Sedan anropades funktionen igen på ConnectionHandle. Funktionen anropades och innan den kördes SQLCancelHandle anropades på ConnectionHandle från en annan tråd i ett flertrådsprogram. |
HY010 | Funktionssekvensfel | (DM) En asynkront körande funktion anropades för en StatementHandle- associerad med ConnectionHandle- och kördes fortfarande när SQLDisconnect- anropades. (DM) En asynkront körande funktion (inte den här) anropades för ConnectionHandle- och kördes fortfarande när den här funktionen anropades. (DM) SQLExecute, SQLExecDirect, SQLBulkOperationseller SQLSetPos anropades för en StatementHandle- som är associerad med ConnectionHandle och returnerades SQL_NEED_DATA. Den här funktionen anropades innan data skickades för alla data-at-execution-parametrar eller kolumner. |
HY013 | Minneshanteringsfel | Det gick inte att bearbeta funktionsanropet eftersom det inte gick att komma åt underliggande minnesobjekt, möjligen på grund av minnesbrist. |
HY117 | Anslutningen pausas på grund av okänt transaktionstillstånd. Endast frånkopplings- och skrivskyddade funktioner tillåts. | (DM) Mer information om inaktiverat tillstånd finns i SQLEndTran Function. |
HYT01 | Tidsgränsen för anslutningen har upphört att gälla | Tidsgränsen för anslutningen upphörde att gälla innan datakällan svarade på begäran och anslutningen är fortfarande aktiv. Tidsgränsen för anslutningen anges via SQLSetConnectAttr, SQL_ATTR_CONNECTION_TIMEOUT. |
IM001 | Drivrutinen stöder inte den här funktionen | (DM) Drivrutinen som är associerad med ConnectionHandle stöder inte funktionen. |
IM017 | Avsökning är inaktiverat i asynkront meddelandeläge | När meddelandemodellen används inaktiveras avsökningen. |
IM018 | SQLCompleteAsync- har inte anropats för att slutföra den tidigare asynkrona åtgärden på handtaget. | Om det tidigare funktionsanropet på handtaget returnerar SQL_STILL_EXECUTING och om meddelandeläget är aktiverat måste SQLCompleteAsync anropas på handtaget för att utföra efterbearbetningen och slutföra åtgärden. |
Kommentarer
Om ett program anropar SQLDisconnect efter SQLBrowseConnect- returnerar SQL_NEED_DATA och innan den returnerar en annan returkod, avbryter drivrutinen anslutningsprocessen och returnerar anslutningen till ett tillstånd som inte är anslutet.
Om ett program anropar SQLDisconnect medan det finns en ofullständig transaktion som är associerad med anslutningshandtaget returnerar drivrutinen SQLSTATE 25000 (ogiltigt transaktionstillstånd), vilket indikerar att transaktionen är oförändrad och anslutningen är öppen. En ofullständig transaktion är en transaktion som inte har checkats in eller återställts med SQLEndTran-.
Om ett program anropar SQLDisconnect innan det har frigjort alla instruktioner som är associerade med anslutningen frigör drivrutinen, efter att den har kopplats från datakällan, dessa instruktioner och alla deskriptorer som uttryckligen har allokerats för anslutningen. Men om en eller flera av de instruktioner som är associerade med anslutningen fortfarande körs asynkront returnerar SQLDisconnect SQL_ERROR med sqlstate-värdet HY010 (funktionssekvensfel). Dessutom frigör SQLDisconnect- alla associerade instruktioner och alla deskriptorer som uttryckligen har allokerats för anslutningen, om anslutningen är i pausat tillstånd eller om SQLDisconnect- avbröts av SQLCancelHandle-.
Information om hur ett program använder SQLDisconnectfinns i Koppla från en datakälla eller drivrutin.
Koppla från en poolanslutning
Om anslutningspooler är aktiverade för en delad miljö och ett program anropar SQLDisconnect på en anslutning i den miljön, returneras anslutningen till anslutningspoolen och är fortfarande tillgänglig för andra komponenter med samma delade miljö.
Kodexempel
Se ODBC-exempelprogrammet, SQLBrowseConnect Functionoch SQLConnect Function.
Relaterade funktioner
Mer information om | Se |
---|---|
Allokera ett handtag | SQLAllocHandle-funktion |
Ansluta till en datakälla | SQLConnect-funktion |
Ansluta till en datakälla med hjälp av en anslutningssträng eller dialogruta | SQLDriverConnect-funktion |
Köra en inchecknings- eller återställningsåtgärd | SQLEndTran Function |
Frigör ett anslutningshandtag | SQLFreeConnect-funktion |