2012-04-04 53 views
0

什麼,我需要做的是執行一個SQL查詢:從wstring的到SQLCHAR

wstring query = (L "INSERT INTO database...........; 

然後我執行此:

CHECK(SQLExecDirectA(hStmt, query, SQL_NTS), "execute query"); 

,但它並沒有編譯,因爲變量查詢必須是一個SQLCHAR否則函數SQLExecDirectA不會工作。

任何人都可以幫忙嗎?

謝謝!

+0

你*有*使用wstring而不是字符串? – 2012-04-04 23:09:57

+0

除了David Feurle的回答,你必須記住'std :: wstring'(或'std :: string')不能直接轉換爲'wchar_t *'(或'char *')。你必須使用例如'query.c_str()'得到一個字符指針。 – 2012-04-05 06:05:23

回答

2

您試圖調用的函數稱爲SQLExecDirect。 (幾乎)winapi中的所有功能都以兩個版本存在 - 一個ascii版本和一個寬版本。根據您的項目設置(多字節字符集/ Unicode),SQLExecDirect是對SQLExecDirectA或SQLExecDirectW(SQLExecDirectA beeing ascci版本和SQLExecDirectW beeing寬版本)的定義。

SQLExecDirectA表示您正在使用寬字符串作爲參數明確調用ascii版本。如果要使用寬字符串,請嘗試調用SQLExecDirectW或SQLExecDirect。