SQLGetConnectAttr-funktion

Överensstämmelse
Version introducerad: ODBC 3.0 Standardsefterlevnad: ISO 92

Summary
SQLGetConnectAttr returnerar den aktuella inställningen för ett anslutningsattribut.

Note

För mer information om vad Driver Manager mappar denna funktion till när en ODBC 3*.x*-applikation arbetar med en ODBC 2*.x*-drivrutin, se Mapping Replacement Functions for Backward Compatibility of Applications.

Syntax

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

Arguments

ConnectionHandle
Indata: Anslutningshandtag.

Attribut
[Input] Attribut att hämta.

ValuePtr
[Utdata] En pekare till minnet för att returnera det aktuella värdet av attributet specificerat av Attribute. För heltalsattribut kan vissa drivrutiner endast skriva de lägre 32- eller 16-bitarsbitarna i en buffert och lämna den högre ordningens biten oförändrad. Därför bör applikationer använda en buffert av SQLULEN och initialisera värdet till 0 innan funktionen anropas.

Om ValuePtr är NULL kommer StringLengthPtr ändå att returnera det totala antalet bytes (exklusive null-termineringstecknet för teckendata) som finns tillgängliga att returnera i bufferten som ValuePtr pekar på.

BufferLength
[Input] Om Attribute är ett ODBC-definierat attribut och ValuePtr pekar på en teckensträng eller en binär buffert, bör detta argument vara längden på *ValuePtr. Om Attribut är ett ODBC-definierat attribut och *ValuePtr är ett heltal, ignoreras BufferLength . Om värdet i *ValuePtr är en Unicode-sträng (vid anrop av SQLGetConnectAttrW) måste BufferLength-argumentet vara ett jämnt tal.

Om Attribut är ett drivrutinsdefinierat attribut anger applikationen attributets natur till Driver Manager genom att sätta argumentet BufferLength . BufferLength kan ha följande värden:

  • Om *ValuePtr är en pekare till en teckensträng, är BufferLength längden på strängen.

  • Om *ValuePtr är en pekare till en binär buffert, placerar applikationen resultatet av makrot SQL_LEN_BINARY_ATTR(längd) i BufferLength. Detta placerar ett negativt värde i BufferLength.

  • Om *ValuePtr är en pekare till ett annat värde än en teckensträng eller binär sträng, bör BufferLength ha värdet SQL_IS_POINTER.

  • Om *ValuePtr innehåller en datatyp med fast längd är BufferLength antingen SQL_IS_INTEGER eller SQL_IS_UINTEGER, beroende på vad som är lämpligt.

StringLengthPtr
[Utdata] En pekare till en buffert där man kan returnera det totala antalet byte (exklusive null-termineringstecknet) som finns tillgängligt att returnera i *ValuePtr. Om attributvärdet är en teckensträng och antalet bytes som kan returneras är större än BufferLength minus längden på nulltermineringstecknet, förkortas datan i *ValuePtr till BufferLength minus längden på nulltermineringstecknet och nulltermineras av drivrutinen.

Returns

SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_NO_DATA, SQL_ERROR eller SQL_INVALID_HANDLE.

Diagnostics

När SQLGetConnectAttr returnerar SQL_ERROR eller SQL_SUCCESS_WITH_INFO kan ett associerat SQLSTATE-värde erhållas från den diagnostiska datastrukturen genom att anropa SQLGetDiagRec med HandleType SQL_HANDLE_DBC och Handle of ConnectionHandle. Följande tabell listar de SQLSTATE-värden som vanligtvis returneras av SQLGetConnectAttr och förklarar var och en i kontexten av denna funktion; notationen "(DM)" föregår beskrivningarna av SQLSTATE som returneras av Driver Manager. Returkoden som är associerad med varje SQLSTATE-värde är SQL_ERROR, om inget annat anges.

SQLSTATE Error Beskrivning
01000 Allmän varning Informationsmeddelande för drivrutinsspecifikt. (Funktionen returnerar SQL_SUCCESS_WITH_INFO.)
01004 Strängdata, höger trunkerade Datan som returnerades i *ValuePtr förkortades till BufferLength minus längden på ett null-termineringstecken. Längden på det otrunkerade strängvärdet returneras i *StringLengthPtr. (Funktionen returnerar SQL_SUCCESS_WITH_INFO.)
08003 Anslutningen är inte öppen (DM) Ett attributvärde som krävde en öppen anslutning specificerades.
08S01 Kommunikationslänkfel Kommunikationslänken mellan drivrutinen och datakällan som drivrutinen var ansluten till misslyckades innan funktionen slutförde bearbetningen.
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 från diagnostikdatastrukturen av argumentet MessageText i SQLGetDiagField beskriver felet och dess orsak.
HY001 Fel vid minnesallokering Drivrutinen kunde inte allokera minne som krävs för att stödja körning eller slutförande av funktionen.
HY010 Funktionssekvensfel (DM) SQLBrowseConnect anropades för ConnectionHandle och returnerades SQL_NEED_DATA. Denna funktion anropades innan SQLBrowseConnect returnerade SQL_SUCCESS_WITH_INFO eller SQL_SUCCESS.

(DM) SQLExecute, SQLExecDirect eller SQLMoreResults anropades för ConnectionHandle och returnerades SQL_PARAM_DATA_AVAILABLE. Den här funktionen anropades innan data hämtades för alla strömmade parametrar.
HY013 Minneshanteringsfel Det gick inte att bearbeta funktionsanropet eftersom det inte gick att komma åt underliggande minnesobjekt, möjligen på grund av minnesbrist.
HY090 Ogiltig sträng- eller buffertlängd (DM) *ValuePtr är en teckensträng, och BufferLength var mindre än noll men inte lika med SQL_NTS.
HY092 Ogiltig attribut-/optionsidentifierare Värdet som specificerades för argumentattributet var inte giltigt för den version av ODBC som stöddes av drivrutinen.
HY114 Drivrutinen stöder inte anslutningsnivå, asynkron funktionsexekvering (DM) En applikation försökte möjliggöra asynkron funktionsexekvering med SQL_ATTR_ASYNC_DBC_FUNCTIONS_ENABLE för en drivrutin som inte stödjer asynkrona anslutningsoperationer.
HY117 Anslutningen pausas på grund av okänt transaktionstillstånd. Endast frånkopplings- och skrivskyddade funktioner tillåts. (DM) Mer information om pausat tillstånd finns i SQLEndTran-funktion.
HYC00 Valfri funktion har inte implementerats Värdet som specificerades för argumentattributet Attribut var ett giltigt ODBC-anslutningsattribut för den version av ODBC som stöddes av drivrutinen, men stöddes inte av drivrutinen.
HYT01 Tidsgränsen för anslutningen gick ut Tidsgränsen för anslutningen löpte ut innan datakällan svarade på begäran. Tidsgränsen för anslutningen anges via SQLSetConnectAttr, SQL_ATTR_CONNECTION_TIMEOUT.
IM001 Drivrutinen stöder inte den här funktionen (DM) Drivrutinen som motsvarar ConnectionHandle stöder inte funktionen.

Comments

För allmän information om anslutningsattribut, se Anslutningsattribut.

För en lista över attribut som kan sättas, se SQLSetConnectAttr. Observera att om Attribute specificerar ett attribut som returnerar en sträng, måste ValuePtr vara en pekare till en buffert för strängen. Den maximala längden på den returnerade strängen, inklusive null-termineringstecknet, kommer att vara BufferLength-bytes .

Beroende på attributet behöver en applikation inte upprätta en anslutning innan den anropar SQLGetConnectAttr. Men om SQLGetConnectAttr anropas och det angivna attributet inte har en standard och inte har satts av ett tidigare anrop till SQLSetConnectAttr, kommer SQLGetConnectAttr att returnera SQL_NO_DATA.

Om Attribut är SQL_ATTR_ TRACE eller SQL_ATTR_ TRACEFILE behöver ConnectionHandle inte vara giltigt, och SQLGetConnectAttr returnerar varken SQL_ERROR eller SQL_INVALID_HANDLE om ConnectionHandle är ogiltigt. Dessa egenskaper gäller för alla anslutningar. SQLGetConnectAttr returnerar SQL_ERROR eller SQL_INVALID_HANDLE om ett annat argument är ogiltigt.

Även om en applikation kan sätta satsattribut genom att använda SQLSetConnectAttr, kan en applikation inte använda SQLGetConnectAttr för att hämta satsattributvärden; den måste anropa SQLGetStmtAttr för att hämta inställningen av satsattribut.

Både SQL_ATTR_AUTO_IPD- och SQL_ATTR_CONNECTION_DEAD anslutningsattribut kan returneras genom ett anrop till SQLGetConnectAttr men kan inte sättas av ett anrop till SQLSetConnectAttr.

Note

Det finns inget asynkront stöd för SQLGetConnectAttr. Vid implementering av SQLGetConnectAttr kan en drivrutin förbättra prestandan genom att minimera antalet gånger information skickas eller begärs från servern.

Mer information om Se
Returnera inställningen för ett instruktionsattribut SQLGetStmtAttr-funktion
Att sätta ett anslutningsattribut SQLSetConnectAttr-funktion
Att sätta ett miljöattribut SQLSetEnvAttr-funktionen
Ange ett instruktionsattribut SQLSetStmtAttr-funktion