2012-03-16 94 views
2

OCILogon函數說明在OCI_UTF16環境模式下,用戶名,密碼和數據庫參數必須採用UTF-16編碼。我通過這些參數如下,OCI_UTF16環境的OCILogon失敗

OCILogon(p_env, p_err, &p_svc,"scott", 5,"tiger",5,"test" , 4); 

請讓我知道如何通過UTF_16格式。我必須使用OCI_ATTR_CHARSET_ID並將其設置爲OCI_UTF16嗎?

回答

1

你說得對,甲骨文documentation says它:

必須在OCI_UTF16環境模式UTF-16編碼。

爲了將其轉換爲UTF-16,他們在這裏沒有說,但是Oracle提供了一個簡單的宏。 它應該是如此簡單:

rc = OCILogon(p_env, p_err, &p_svc, UTF16("scott"), 5, UTF16("tiger"), 5, UTF16("d458_nat"), 8); 

文檔claims too,您還可以以使用WideString的文字使用「L」,所以這也應該適用:

rc = OCILogon(p_env, p_err, &p_svc, L"scott", 5, L"tiger", 5, L"d458_nat", 8); 

注意:您應包括ocilib.h和鏈路與ocilibw.Lib,如OCI文件指出:

在Microsoft Windows,32位和64位提供(x86)的DLL和 可以很容易地重新編譯。解壓當前存檔(ocilib-xyz-windows.zip)
複印OCILIB \包括\ ocilib.h
複印OCILIB \ LIB32 | 64 \ OCILIB [X]的.lib
複印OCILIB \ LIB32 | 64 \ OCILIB [X ]。 DLL [...]
其中[x]是OCILIB的編譯版本( 'A'> - > ANSI, 'W' - > Unicode中, 'M' - >混合)

+0

感謝您的建議。我試圖使用UTF宏轉換爲Unicode,但它給我鏈接錯誤。是否必須添加任何庫或包含頭文件以支持此代碼中的宏。我的代碼是使用OCI.lib構建的。 – user1268935 2012-03-16 12:43:06

+0

@ user1268935看到我完成的答案 – Coren 2012-03-16 17:28:07

+0

我已經包括了從OCILIB-3.9.3-windows.zip.error LNK2019的DLL和LIB:在函數引用_main \t \t 致命錯誤LNK1120解析的外部符號_UTF16:1無法解析的外部 – user1268935 2012-03-20 07:09:16

相關問題