Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
A kulcsok átlátszatlan, 32 bites értékek, amelyek egy adott elemet azonosítanak; az ODBC-ben ez az elem lehet környezet, kapcsolat, utasítás vagy leíró. Amikor az alkalmazás meghívja az SQLAllocHandle-t, az Illesztőprogram-kezelő vagy az illesztőprogram létrehoz egy új elemet a megadott típusból, és visszaadja a leíróját az alkalmazásnak. Az alkalmazás később a leíró segítségével azonosítja az elemet az ODBC-függvények meghívásakor. Az illesztőprogram-kezelő és az illesztőprogram a fogantyúval keresi meg az elem adatait.
Az alábbi kód például két utasításkezelőt (hstmtOrder és hstmtLine) használ az értékesítési rendelések és az értékesítési rendeléssorok eredménykészletének létrehozásához szükséges utasítások azonosítására. Később ezekkel a leírókkal határozza meg, melyik eredményhalmazból olvassa be az adatokat.
SQLHSTMT hstmtOrder, hstmtLine; // Statement handles.
SQLUINTEGER OrderID;
SQLINTEGER OrderIDInd = 0;
SQLRETURN rc;
// Prepare the statement that retrieves line number information.
SQLPrepare(hstmtLine, "SELECT * FROM Lines WHERE OrderID = ?", SQL_NTS);
// Bind OrderID to the parameter in the preceding statement.
SQLBindParameter(hstmtLine, 1, SQL_PARAM_INPUT, SQL_C_ULONG, SQL_INTEGER, 5, 0,
&OrderID, 0, &OrderIDInd);
// Bind the result sets for the Order table and the Lines table. Bind
// OrderID to the OrderID column in the Orders table. When each row is
// fetched, OrderID will contain the current order ID, which will then be
// passed as a parameter to the statement tofetch line number
// information. Code not shown.
// Create a result set of sales orders.
SQLExecDirect(hstmtOrder, "SELECT * FROM Orders", SQL_NTS);
// Fetch and display the sales order data. Code to check if rc equals
// SQL_ERROR or SQL_SUCCESS_WITH_INFO not shown.
while ((rc = SQLFetch(hstmtOrder)) != SQL_NO_DATA) {
// Display the sales order data. Code not shown.
// Create a result set of line numbers for the current sales order.
SQLExecute(hstmtLine);
// Fetch and display the sales order line number data. Code to check
// if rc equals SQL_ERROR or SQL_SUCCESS_WITH_INFO not shown.
while ((rc = SQLFetch(hstmtLine)) != SQL_NO_DATA) {
// Display the sales order line number data. Code not shown.
}
// Close the sales order line number result set.
SQLCloseCursor(hstmtLine);
}
// Close the sales order result set.
SQLCloseCursor(hstmtOrder);
A leírók csak az őket létrehozó ODBC-összetevő számára értelmezhetők; azaz csak az illesztőprogram-kezelő tudja értelmezni az illesztőprogram-kezelő leíróit, és csak az illesztőprogram tudja értelmezni a saját leíróit.
Tegyük fel például, hogy az előző példában szereplő illesztő lefoglal egy struktúrát egy utasítás információinak tárolásához, és az utasításkezelőként erre a struktúrára mutató mutatót ad vissza. Amikor az alkalmazás meghívja az SQLPrepare-t, átad egy SQL-utasítást és az értékesítési rendeléssorszámokhoz használt utasítás leíróját. Az illesztőprogram elküldi az SQL-utasítást az adatforrásnak, amely előkészíti és visszaad egy hozzáférési terv azonosítót. Az illesztőprogram a fogantyút használja az azonosító tárolására szolgáló struktúra megkereséséhez.
Később, amikor az alkalmazás meghívja az SQLExecute-et, hogy létrehozza egy adott értékesítési rendeléshez tartozó eredményhalmazt, ugyanazt a leírót adja át. Az illesztőprogram a fogantyúval kéri le a hozzáférési terv azonosítóját a struktúrából. Elküldi az azonosítót az adatforrásnak, hogy megmondja, melyik tervet kell végrehajtania.
Az ODBC két fogópontszinttel rendelkezik: Az Illesztőprogram-kezelő fogópontjai és az illesztőprogram-leírók. Az alkalmazás az ODBC-függvények hívása során illesztőprogram-kezelői leírókat használ, mivel az illesztőprogram-kezelőben meghívja ezeket a függvényeket. Az Illesztőprogram-kezelő ezzel a leíróval keresi meg a megfelelő illesztőprogram-leírót, és az illesztőprogram-leírót használja a függvény illesztőprogramban való meghívásakor. Az illesztőprogramok és az Illesztőprogram-kezelő kezeléseinek használatára példa: Illesztőprogram-kezelő szerepköre a kapcsolati folyamatban.
A kezelők két szintje az ODBC-architektúra egy jelensége; a legtöbb esetben nem releváns sem az alkalmazás, sem az illesztőprogram szempontjából. Bár erre általában nincs ok, lehetséges, hogy az alkalmazás az SQLGetInfo meghívásával határozza meg az illesztőprogram-leírókat.
Ez a szakasz a következő témaköröket tartalmazza.