在應用程式能夠連接到資料來源或驅動程式之前,必須分配一個連線句柄,具體如下:
應用程式宣告一個 SQLHDBC 型別的變數。 接著它呼叫 SQLAllocHandle ,傳遞該變數的位址、分配連線的環境代柄,以及SQL_HANDLE_DBC選項。 例如:
SQLHDBC hdbc1; SQLAllocHandle(SQL_HANDLE_DBC, henv1, &hdbc1);驅動程式管理器會分配一個結構來儲存關於該語句的資訊,並回傳變數中的連接句柄。
驅動程式管理器此時不會呼叫驅動程式中的 SQLAllocHandle ,因為它不知道該呼叫哪個驅動程式。 它會延遲在驅動程式中呼叫 SQLAllocHandle ,直到應用程式呼叫函式連接資料來源。 欲了解更多資訊,請參閱本節後面的 「駕駛經理在連接流程中的角色」。
值得注意的是,分配連接句柄並不等同於載入驅動程式。 驅動程式在呼叫連接函式之前不會被載入。 因此,在分配連線句柄且連接驅動程式或資料來源之前,應用程式只能呼叫連接句柄的函式,只有 SQLSetConnectAttr、 SQLGetConnectAttr 或帶有 SQL_ODBC_VER 選項的 SQLGetInfo 。 呼叫使用連接句柄的其他函式,如 SQLEndTran,會回傳 SQLSTATE 08003(連線未開啟)。 完整詳情請參閱 附錄B:ODBC狀態轉換表。
欲了解更多關於連接句柄的資訊,請參閱 連線句柄。