OCILogon函数表示用户名,密码和数据库参数必须在OCI_UTF16环境模式下采用UTF-16编码。我传递这些参数如下,
OCILogon(p_env, p_err, &p_svc,"scott", 5,"tiger",5,"test" , 4);
请告诉我如何传递UTF_16格式。我是否必须使用OCI_ATTR_CHARSET_ID并将其设置为OCI_UTF16?
答案 0 :(得分:1)
你是对的,Oracle 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,你也可以使用“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 \ include \ ocilib.h
复制ocilib \ lib32 | 64 \ ocilib [x] .Lib
复制ocilib \ lib32 | 64 \ ocilib [x]。 Dll [...]
其中[x]是OCILIB的编译版本('a'> - > ANSI,'w' - > Unicode,'m' - >混合)