ADO execute 返回的影响行数错误!!用结果集就正确,等高手解答!盼回复!!

时间:2020-12-26 15:55:59
VS2010 C++ ADO 用命令行参数给出时间值,去数据库里查询,但是返回的影响行数与把sql语句直接放到数据库执行的影响行数不同。
ADO代码:
void main(int argc,char* argv[]) //a给的是2012-9-5
{
string a;
a=argv[1];
sql1.Format(_T("select * from mana_author where input_date >to_date('%s','yyyy-mm-dd')"),CString(a.c_str()));
m_pConnection->Execute(_bstr_t(sql1),&records_affected,adCmdText);

影响行数records_affected,大于100时总是返回100,小于100的时候是正确的结果。

数据库直接执行的sql语句:select * from mana_author where input_date >to_date('2012-9-4','yyyy-mm-dd') 

这是什么原因呢?哪里错了,求帮忙。。。
另外records_affected.intVal 和 records_affected.lVal 有什么区别呢? 我用的是intVal

-----------------今早一来改用结果集_RecordsetPtr-----
用GetRecordCount()获得结果集行数,结果与直接用sql在数据库运行相同,真奇怪。。。。execute到底怎么回事,,没有高手能解答一下么。。。

5 个解决方案

#1


影响行数records_affected,大于100时总是返回100,小于100的时候是正确的结果。

还有这情况? 是不是哪里设置了什么。

你在执行完查询后,直接打印记录数,看是多少

#2


影响行数records_affected,大于100时总是返回100,小于100的时候是正确的结果。

还有这情况? 是不是哪里设置了什么。

你在执行完查询后,直接打印记录数,看是多少

#3


引用 2 楼  的回复:
影响行数records_affected,大于100时总是返回100,小于100的时候是正确的结果。

还有这情况? 是不是哪里设置了什么。

你在执行完查询后,直接打印记录数,看是多少

我也不知道为什么大于100行以后就不对了。。。都显示100。。设置?就正常用ADO 没设置什么啊。。。
用结果集打印总行数就是对的,我就是执行完以后records_affected.intVal打印影响行数

#4


引用 2 楼  的回复:
影响行数records_affected,大于100时总是返回100,小于100的时候是正确的结果。

还有这情况? 是不是哪里设置了什么。

你在执行完查询后,直接打印记录数,看是多少

cout << records_affected.intVal << "," << records_affected.lVal<< endl; getchar();
}
这么打印的。。另外 我不知道intval和lval什么区别。。。但是都是100

#5


盼回复啊。。。高手们。。。。。

#1


影响行数records_affected,大于100时总是返回100,小于100的时候是正确的结果。

还有这情况? 是不是哪里设置了什么。

你在执行完查询后,直接打印记录数,看是多少

#2


影响行数records_affected,大于100时总是返回100,小于100的时候是正确的结果。

还有这情况? 是不是哪里设置了什么。

你在执行完查询后,直接打印记录数,看是多少

#3


引用 2 楼  的回复:
影响行数records_affected,大于100时总是返回100,小于100的时候是正确的结果。

还有这情况? 是不是哪里设置了什么。

你在执行完查询后,直接打印记录数,看是多少

我也不知道为什么大于100行以后就不对了。。。都显示100。。设置?就正常用ADO 没设置什么啊。。。
用结果集打印总行数就是对的,我就是执行完以后records_affected.intVal打印影响行数

#4


引用 2 楼  的回复:
影响行数records_affected,大于100时总是返回100,小于100的时候是正确的结果。

还有这情况? 是不是哪里设置了什么。

你在执行完查询后,直接打印记录数,看是多少

cout << records_affected.intVal << "," << records_affected.lVal<< endl; getchar();
}
这么打印的。。另外 我不知道intval和lval什么区别。。。但是都是100

#5


盼回复啊。。。高手们。。。。。