Unicode 驅動程式
驅動程式應該為 Unicode 驅動程式或 ANSI 驅動程式,完全取決於資料來源的本質。 如果資料來源支援 Unicode 資料,則驅動程式應為 Unicode 驅動程式。 如果資料來源僅支援 ANSI 資料,則驅動程式應保持為 ANSI 驅動程式。
Unicode 驅動程式必須匯出 SQLConnectW,才能被驅動程式管理員辨識為 Unicode 驅動程式。
Unicode 驅動程式必須接受 Unicode 函式 (具有 W 尾碼),並儲存 Unicode 資料。 該驅動程式也可以接受 ANSI 函式,但並非必要條件。 (驅動程式管理員不會將具有 A 尾碼的 ANSI 函式呼叫傳遞至驅動程式,而是將其轉換為不含尾碼的 ANSI 函式呼叫,才會傳遞至驅動程式。)
根據應用程式的繫結而定,Unicode 驅動程式必須能夠以 Unicode 或 ANSI 格式傳回結果集。 如果應用程式繫結至 SQL_C_CHAR,Unicode 驅動程式必須將 SQL_WCHAR 資料轉換為 SQL_CHAR。 驅動程式管理員會針對 ANSI 驅動程式將 SQL_C_WCHAR 對應至 SQL_C_CHAR,但不會針對 Unicode 驅動程式加以對應。
注意
在判斷驅動程式類型時,驅動程式管理員會呼叫 SQLSetConnectAttr,並在連線時間設定 SQL_ATTR_ANSI_APP 屬性。 如果應用程式使用 ANSI API,SQL_ATTR_ANSI_APP 會被設定為 SQL_AA_TRUE,若是使用 Unicode,則會被設定為 SQL_AA_FALSE 的值。 使用這個屬性,可讓驅動程式根據應用程式類型呈現出不同行為。 該屬性無法透過應用程式直接設定,而且 SQLGetConnectAttr不支援此屬性。 如果驅動程式針對 ANSI 和 Unicode 應用程式同時呈現出相同行為,則應針對此屬性傳回 SQL_ERROR。 如果驅動程式傳回 SQL_SUCCESS,在使用連線共用時,驅動程式管理員會分隔 ANSI 和 Unicode 連線。