共用方式為


驅動程式管理員中的函式對應

對於採用字串引數的函式,驅動程式管理員支援兩個進入點。 未裝飾的函式 (SQLDriverConnect) 是函式的 ANSI 形式。 Unicode 表單是以 W (SQLDriverConnectW) 裝飾。

ODBC 標頭檔也支援使用 A 裝飾的函式 (SQLDriverConnectA),以便使用混合的 ANSI/Unicode 應用程式。 對 A 函式進行的呼叫,實際上是呼叫未裝飾的進入點 (SQLDriverConnect)。

如果應用程式是以 _UNICODE #define 編譯,ODBC 標頭檔會將未裝飾的函式呼叫 (SQLDriverConnect) 對應至 Unicode 版本 (SQLDriverConnectW)。

如果驅動程式支援 SQLConnectW,驅動程式管理員會將驅動程式辨識為 Unicode 驅動程式。

如果驅動程式是 Unicode 驅動程式,驅動程式管理員會進行函式呼叫,如下所示:

  • 直接將不含字串引數或參數的函式傳遞至驅動程式。

  • 將 Unicode 函式 (具有 W 尾碼) 直接傳遞至驅動程式。

  • 將的 ANSI 函式 (具有 A 尾碼) 轉換為 Unicode 函式 (具有 W 尾碼),方法是將字串引數轉換成 Unicode 字元,並將 Unicode 函式傳遞至驅動程式。

如果驅動程式是 ANSI 驅動程式,驅動程式管理員會呼叫函式,如下所示:

  • 直接將不含字串引數或參數的函式傳遞至驅動程式。

  • 將 Unicode 函式 (具有 W 尾碼) 轉換為 ANSI 函式呼叫,並將其傳遞至驅動程式。

  • 將 ANSI 函式直接傳遞至驅動程式。

驅動程式管理員在內部啟用 Unicode。 因此,搭配 Unicode 驅動程式使用的 Unicode 應用程式會獲得最佳效能,因為驅動程式管理員只會將 Unicode 函式傳遞至驅動程式。 若 ANSI 應用程式是搭配 ANSI 驅動程式使用,驅動程式管理員在處理某些函式時,必須將字串從 ANSI 轉換成 Unicode,例如 SQLDriverConnect。 處理函式之後,驅動程式管理員必須先將 Unicode 字串轉換回 ANSI,再將函式傳送至 ANSI 驅動程式。

驅動程式傳回 SQL_STILL_EXECUTING 或 SQL_NEED_DATA 時,應用程式不應修改或讀取其繫結參數緩衝區。 驅動程式管理員會將緩衝區繫結至 ANSI,直到驅動程式傳回 SQL_SUCCESS、SQL_SUCCESS_WITH_INFO 或 SQL_ERROR 為止。 多線程應用程式不應該存取另一個線程執行 SQL 語句的任何系結參數值。 驅動程式管理員會將資料「就地」從 Unicode 轉換成 ANSI,而其他執行緒可能會在驅動程式仍在處理 SQL 陳述式時,在這些緩衝區中看到 ANSI 資料。 將 Unicode 資料繫結至 ANSI 驅動程式的應用程式不得將兩個不同的資料行繫結至相同的位址。