1

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

  1. 但是插入无法更新表中的数据,返回值 S_OK 与 RowsAffected 值为 -1 。
  2. 为什么'RowsAffected'总是-1,即使查询执行没有错误'select statement'。

我的代码片段:

IMultipleResults * multipleRowSets;
DBROWCOUNT RowsAffected= 0;

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

请有人帮我找出问题所在。

4

1 回答 1

0

在使用 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

于 2013-06-07T08:46:35.050 回答