SQLExecDirect
ODBC を使用してデータベースに接続するための呼び出しに渡されるクエリ文字列を動的に作成する C++ プログラムがあります。ある関数から別の関数に変数を渡すのに問題があるので、何か基本的なものが欠けているに違いないと思いますか?
ConstructQuery
関数 ( type を返す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 *
ように連結されるようにすることです-しかし、それが可能かどうかはわかりませんし、それが好ましいとは思いませんか?