c++ - 为什么 ICommandText::Execute 总是将 pRowsAffected 的值更新为 -1,即使语句已正确执行?

标签 c++ sql-server-2008

我尝试使用 ICommandText::Execute 来执行 sql select 和 Insert。但它总是将 RowsAffected 的值更新为 -1,并为 hr 返回值 S_OK。 当我继续从表中获取“select 语句”的行时,它工作正常并提供了表中的正确数据。

  1. 但是 Insert 无法更新表中的数据,返回值为 S_OK,RowsAffected 值为 -1。
  2. 为什么“RowsAffected”始终为 -1,即使针对“select statement”执行的查询没有错误。

我的代码片段:

IMultipleResults * multipleRowSets;
DBROWCOUNT RowsAffected= 0;

hr = pICommandText->Execute(NULL, IID_IMultipleResults, NULL, &RowsAffected, (IUnknown**) &multipleRowSets);

请有人帮我找出问题。

最佳答案

在使用 mIMultipleResults 的情况下,IMultipleResults::GetResult 可用于获取受删除、更新和插入影响的行数。

hr = multipleRowSets->GetResult(NULL, 0, IID_IRowset, &RowsAffected, (IUnknown**) &rowset)

此处,RowsAffected 返回更新的行数。

引用: http://msdn.microsoft.com/en-us/library/windows/desktop/ms723081%28v=vs.85%29.aspx

关于c++ - 为什么 ICommandText::Execute 总是将 pRowsAffected 的值更新为 -1,即使语句已正确执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16939853/

相关文章:

sql-server - SQL Server 2008 将 localhost 解析为计算机名称

c++ - valgrind:地址 0x5111715 处无法识别的指令

sql-server - 如何找到 'No Join Predicate' 的来源

c++ - 特定的直角三角形在 Cpp 中未被识别为直角

c++ - C++ 模板函数可以在返回参数上重载吗?

mysql - SQL 查询中的问题

java - 如何使用Java中的sql server 2008 R2中的if存在执行删除表查询

sql - 日志记录数据库中的主键

c++ - 使用结构方法返回时出错 - C++

C++ 使用纯虚函数接收错误, "variable or field ' x' 声明为 void"