你如何找到SQLWCHAR的长度?

时间:2014-06-10 15:10:09

标签: c++ sql-server odbc

真的很烦人。一般来说,这些字符串似乎很难使用。

我可以这样做:

 std::wstring strdsn = L"stringsaidtwice";
 SQLWCHAR DSName[60] = L"stringsaidtwice";

 retcode = SQLConnect(connHandle, DSName, strdsn.length(), NULL,
    0, NULL, 0);

这不起作用:

 sizeof(DSName);
 sizeof(DSName)*sizeof(SQLWCHAR);

可能修剪它然后sizeof()?

唉。显然不是正确的事情。但基本的操作,如尺寸调整,复制正常'使用SQLWCHARs时,字符串似乎很难回避。

注意:ODBC似乎是新的'游戏因为MS正在转储OLE DB而且EF很慢。 (截至2014年6月)。

更新:好的,这是能够使用SQLWCHARS运行所需的基本工具

    // To convert an ordinary string to a SQLWCHAR
    char  regcstring[120] = "mystringinput";  //regular char * input
    const size_t WCHARBUFSIZE = 120;
    SQLWCHAR  DSName[WCHARBUFSIZE];
    MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, regcstring, -1, DSName, WCHARBUFSIZE);

    // To provide the size of a SQLWCHAR (wchar_t)
retcode = SQLConnect(connHandle, DSName, std::wcslen(DSName), NULL,
    0, NULL, 0);

嗯,这对我很有帮助,至少.....

1 个答案:

答案 0 :(得分:1)

如果SQLWCHAR的工作方式与标准宽字符串的工作方式相同,则可以使用wcsncpy,例如wcslenstd::wstring。当然,我建议您在使用C函数之前使用SQLWCHAR执行操作。我也有一半期望某人真正有使用{{1}}的经验来更好地了解某些事情,所以请稍等一下。