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。 驅動程式管理器會將 SQL_C_WCHAR 映射到 ANSI 驅動程式的 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 連線。