2012-04-04 47 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。