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