【问题标题】:From wstring to SQLCHAR从 wstring 到 SQLCHAR
【发布时间】:2012-04-04 22:37:56
【问题描述】:

我需要做的是执行一个 SQL 查询:

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

然后我执行这个:

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

但它不能编译,因为变量查询必须是 SQLCHAR 否则函数 SQLExecDirectA 将不起作用。

有人可以帮忙吗?

谢谢!

【问题讨论】:

  • 用wstring代替string吗?
  • 除了 David Feurle 的回答之外,您必须记住,std::wstring(或std::string)不能直接转换为wchar_t *(或char *)。你必须使用例如query.c_str() 获取字符指针。

标签: c++ wstring


【解决方案1】:

您尝试调用的函数称为 SQLExecDirect。 (几乎)winapi 中的所有功能都存在于两个版本中——一个 ascii 版本和一个宽版本。根据您的项目设置(多字节字符集/Unicode),SQLExecDirect 是对 SQLExecDirectA 或 SQLExecDirectW 的定义(SQLExecDirectA 是 ascci 版本,SQLExecDirectW 是宽版本)。

SQLExecDirectA 表示您使用宽字符串作为参数显式调用 ascii 版本。如果要使用宽字符串,请尝试调用 SQLExecDirectW 或 SQLExecDirect。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-31
    • 1970-01-01
    • 2013-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多