将std :: wstring转换为SQLWCHAR *

时间:2012-06-30 15:15:24

标签: c++ sql odbc wstring

我有一个C ++程序,它动态创建一个查询字符串,然后将其传递给SQLExecDirect调用以使用ODBC连接到数据库。我将变量从一个函数传递到另一个函数时遇到了麻烦,所以我认为我必须遗漏一些基本的东西?

ConstructQuery函数(返回类型SQLWCHAR *)中,我有:

std::wstring test = L"test string"; //This test string will actually be several concatenated strings
SQLWCHAR *statement = (SQLWCHAR *)test.c_str();
std::wcout << statement;
return statement;

这将按预期打印语句变量。但是当我将变量传递给我的主函数时:

SQLStatement = ConstructQuery(SQLStatement);
std::wcout << SQLStatement;

我没有输出。

如果,而不是statement = (SQLWCHAR *)test.c_str();

我使用:statement = L"test string";

变量传递正常,但是我无法在函数的前面部分动态创建“测试字符串”查询。

我很难找到关于SQLWCHAR的更多信息。我猜我可能会错误地将std::wstring转换为SQLWCHAR *?另一个选择是重写函数,以便所有wstring都是SQLWCHAR *并以这种方式进行连接 - 但我不确定是否可能,即使它是我不认为它是优选?

1 个答案:

答案 0 :(得分:2)

您正在返回一个指向本地变量的指针,该变量超出了ConstructQuery函数末尾的范围。按值返回std::wstring可能最容易,然后从那里开始工作。