社区
数据库
帖子详情
ADO/C++连SYBASE数据库时_RecordsetPtr的RecordCount总返回-1
gun2
2000-07-17 07:47:00
我是用ADO与C++写访问SYBASE数据库的程序。
...
_ConnectionPtr con;
...
_RecordsetPtr rec = con->Execute( (LPCTSTR)Msg, 0, adCmdUnknown );
...
rec->RecordCount总是等于-1,何故?
...全文
325
14
打赏
收藏
ADO/C++连SYBASE数据库时_RecordsetPtr的RecordCount总返回-1
我是用ADO与C++写访问SYBASE数据库的程序。 ... _ConnectionPtr con; ... _RecordsetPtr rec = con->Execute( (LPCTSTR)Msg, 0, adCmdUnknown ); ... rec->RecordCount总是等于-1,何故?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wobuhui
2001-09-06
打赏
举报
回复
e
xwchena
2001-09-06
打赏
举报
回复
好像rec->RecordCount是返回你访问过的记录的数量,所以要先把记录走一遍,再调用
rec->RecordCount才能取得正确的结果
gun2
2000-08-09
打赏
举报
回复
其实,大家也许忽略了一点:同样这一段程序,连SYBASE有问题,连SQL Server就没有。
请问何故?
zhq2000
2000-07-22
打赏
举报
回复
当ADO无法统计记录数时
RecordCount返回-1
AbsolutePosition返回-1
zhq2000
2000-07-22
打赏
举报
回复
要ADO的RecordCount返回正确值,必须指定游标类型为adOpenKeyset或adOpenStatic。
而adOpenForwardOnly为只向前游标,所以无法统计记录数;
adOpenDynamic为动态游标,用它可以动态地增加记录,修改记录或删除记录,不需要使用Requery就能在已打的记录集中体现出来,所以adOpenDynamic是最灵活方便的游标,但
正因为它的这些特点,所以无法动态地统计当前的记录数及当前记录位置,记录数可通过另两种方式来获取:
1、用Open("Select count(*) from TableName where 'your condition here'")。
2、用MoveFirst,MoveNext进行统计。
zzh
2000-07-22
打赏
举报
回复
不用如此复杂,可以用SQL语句来取名总数db.Open("select Count(*) from 表名");这样就可以返回记录数了。
lionpb
2000-07-22
打赏
举报
回复
我也碰到过这种问题,不过原因是因为我使用了事务机制,在事务处理中,相关的数据库被锁定,只有提交或回滚事务(即事务结束)之后才解锁,在此期间,是无法取得RecordCount的.
Tyro
2000-07-22
打赏
举报
回复
ADO的默认游标类型是前向游标adOpenForwardOnly,在游标类型为adOpenForwardOnly
时recordCount的值是-1,要想获得recordcount的真正值,你必须在打开记录集的时候设置记录集的游标类型为adOpenKeyset或adOpenDynamic
UserReg
2000-07-22
打赏
举报
回复
我是用ADO与C++写访问SYBASE数据库的程序。
...
...
_RecordsetPtr rec = con->Execute( (LPCTSTR)Msg, 0, adCmdUnknown );
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
打开方式应该用静态表,或者Keyset方式打开就能正确返回RecordCount
...
rec->RecordCount总是等于-1,何故?
gun2
2000-07-22
打赏
举报
回复
谢谢!请稍待,等我把问题搞清楚便给分.
stepbystep
2000-07-18
打赏
举报
回复
ADO的默认游标类型是前向游标,con->execute(..)更是如此,
在此情况下recordCount的值是-1,要使recordcount起作用,你
必须给定义的rec设置游标类型,为adOpenDynamic,用rec.open打开
就可以了。
guo_jerry
2000-07-18
打赏
举报
回复
MoveFirst,MoveNext 不是好办法,你试试
如下方法:
pRecordSet.CreateInstance(_uuidof(Recordset));
pRecordSet->CursorType=adOpenStatic;//问题出在这
bird2000
2000-07-18
打赏
举报
回复
在引用rec->RecordCount前,先调用movefirst()和movelast()。应该就可以了。呵呵
endlessing
2000-07-17
打赏
举报
回复
i have done some work with ADO & SQL, and i find the same problem. i don't mind it. you can get the result from MoveFirst, MoveNext.
ADO
数据库
编程
ADO
数据库
编程 中大型的
数据库
管理信息系统(MIS)的开发,一般很少用VC来完成(因为开发效率低,不过运行效率很高),而是使用VB, C#,Java等开发效率较高的语言。但小型MIS系统完全可以用VC来实现。下面讲解VC中访问
数据库
的基本技术。 一、四种
数据库
访问技术 ODBC(Open Database Connectivity) 开放式
数据库
连接,是一种用来在
数据库
管理系统(DBMS)...
VISUAL
C++
数据库
开发-高级篇
在Visual
C++
中用
ADO
进行
数据库
编程 1. 生成应用程序框架并初始化OLE/COM库环境 创建一个标准的MFC AppWizard(exe)应用程序,然后在使用
ADO
数据库
的InitInstance函数中初始化OLE/COM库(因为
ADO
库是一个COM DLL库)。 本例为: BOOL C
Ado
testDlg::OnInitDialog() {
V
C++
数据库
在Visual
C++
中用
ADO
进行
数据库
编程 1. 生成应用程序框架并初始化OLE/COM库环境 创建一个标准的MFC AppWizard(exe)应用程序,然后在使用
ADO
数据库
的InitInstance函数中初始化OLE/COM库(因为
ADO
库是一个COM DLL库)。 本例为: BOOL C
Ado
testDlg::OnInitDialog() {
【转】
数据库
编程
总
结
from: http://blog.csdn.net/byxdaz/archive/2010/04/11/5473557.aspx当前各种主流
数据库
有很多,包括Oracle, MS SQL Server,
Sybase
, Informix, MySQL, DB2, Interbase / Firebird, PostgreSQL, SQLite, SAP/DB, TimesTen, M
VC
数据库
编程
总
结(一)
一、访问
数据库
技术方法................................................................................................. 2
1、几种是
数据库
访问方法比较.................................................................................. 2
2、VC
数据库
编程几种方法.................
数据库
4,011
社区成员
39,817
社区内容
发帖
与我相关
我的任务
数据库
VC/MFC 数据库
复制链接
扫一扫
分享
社区描述
VC/MFC 数据库
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章