Unicode 資料

提供 SQL Unicode 資料類型來描述在 DBMS 上原生以 Unicode 呈現的資料。 提供 C Unicode 資料類型,以允許應用程式將資料繫結至 Unicode 緩衝區。 驅動程式管理員可以從 Unicode C 類型轉換資料 (SQL_C_WCHAR),以便與 ANSI 驅動程式搭配運作。

ODBC 3.0 或 2.x 應用程式一律會繫結至 ANSI 資料類型。 為了獲得最佳效能,如果 SQL 資料行類型為 ANSI,ODBC 3.5 (或更高版本) 的應用程式應該繫結至 ANSI 資料類型,而且如果 SQL 資料行類型為 Unicode,則應該繫結至 Unicode C 資料類型。

SQL Unicode 類型指標為 SQL_WCHAR、SQL_WVARCHAR 和 SQL_WLONGVARCHAR。 SQL_WCHAR 資料具有固定字串長度,而 SQL_WVARCHAR 具有宣告最大值的可變長度,而 SQL_WLONGVARCHAR 具有取決於資料來源的可變長度。

C Unicode 類型指標 SQL_C_WCHAR。 這是每個 SQL Unicode 類型指標的預設值。 所有 SQL 類型都可以轉換成 SQL_C_WCHAR,而 SQL_C_WCHAR 可以轉換成所有 SQL 類型。 應用程式可以藉由下列三種方式的其中一種一擷取資料:

  • 以 SQL_C_CHAR 的形式擷取資料。

  • 以 SQL_C_WCHAR 的形式擷取資料。

  • 將資料宣告為 SQL_C_TCHAR。 這是巨集,如果應用程式編譯為 Unicode 應用程式,會插入 SQL_C_WCHAR,或者,如果編譯為 ANSI 應用程式,則會插入 SQL_C_CHAR。

SQL_C_TCHAR 在函式中宣告,如下所示:

SQLBindParameter(StatementHandle, 1, SQL_PARAM_INPUT, SQL_C_TCHAR, SQL_WCHAR, NameLen, 0, Name, 0, &Name)  

應用程式編譯為 Unicode 應用程式時,ValueType 引數會從 SQL_C_TCHAR 變更為 SQL_C_WCHAR。 應用程式編譯為 ANSI 應用程式時,ValueType 引數會變更為 SQL_C_CHAR。

Unicode 驅動程式仍必須支援 ANSI 資料類型,包括 SQL_CHAR。 如果使用 Unicode 驅動程式的應用程式繫結至SQL_CHAR,驅動程式管理員不會將 SQL_CHAR 資料對應於 SQL_WCHAR。 Unicode 驅動程式必須接受 SQL_CHAR 資料。

驅動程式管理員會將驅動程式和 DSN 名稱儲存在 Unicode 中,並視需要將這些名稱對應於 ANSI。 如果 Unicode 字元無法對應於 ANSI 字元 (如果驅動程式和 DSN 名稱使用不是電腦原生字碼頁的字碼頁字元),則無法轉換的字元會以系統提供的預設字元表示。