2012-06-30 84 views
1

我有一个C++程序,它动态创建一个查询字符串,然后它将被传递给SQLExecDirect调用以使用ODBC连接到数据库。我无法将变量从一个函数传递给另一个函数,因此我认为我必须缺少一些基本的东西?将std :: wstring转换为SQLWCHAR *

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 *,并以这种方式进行连接 - 但我不确定这是可能的,即使它是我不认为它是首选?

+0

我知道这是基本的东西,非常感谢。有没有办法让我接受你的评论作为答案? – TwoHundredOK

回答

2

您正在返回一个指向局部变量的指针,该变量超出了函数ConstructQuery结尾处的范围。根据价值返回std::wstring可能是最容易的,然后从那里开始工作。