阅读:2578回复:6
请教一个vc用ODBC连接oracle数据库的问题
我用appwizard创建一个sdi,数据库支持我选的header file only.
我首先用classwizard创建了一个基类为CRecordset的派生类CMyrs. 整个程序也就几行打开数据源的代码,是放在view类的ondraw()函数里的: CMyrs rs(NULL);//当然定义类的头文件myrs.h是include到view.cpp的了 rs.Open();//打开数据集 if(rs.IsEOF())//判断数据集是否为空 AfxMessageBox(\"eof\"); else AfxMessageBox(\"not eof\"); 这是最基本的连接数据源的代码了,可问题是第一次我创建了这样的程序,运行后显示是not eof的,表示数据集有数据,而且无论运行几次都显示not eof. 但我后来又编写完全一样的代码创建了第二个这样的程序,显示eof,表示数据集没有数据,而且无论运行几次都显示eof,而运行第一次的程序是显示not eof,是有数据的,但我两次的程序代码是完全一样的(总共就上面几行代码,应该是不会有错了)。 我已经尝试过很多次了,数据库表本身是肯定有数据的,但用同一代码创建不同的程序运行结果却不一样,不知道是怎么回事了. 请有经验的弟兄告知缘由,衷心感谢. [编辑 - 6/5/05 by Camus1981] |
|
沙发#
发布于:2005-06-06 09:36
我用appwizard创建一个sdi,数据库支持我选的header file only. 你的select语句呢? |
|
|
板凳#
发布于:2005-06-06 09:53
对楼主别再白费时间了,肯定是两个程序不一样,可能是某个选项的选择不一样。(也可能你没仔细看代码。 :))。
|
|
|
地板#
发布于:2005-06-16 16:26
感觉你没有关闭数据库,可以这样,你不是第一次显示有数据吗?然后关闭机器,从新启动,看看应该也是有数据,不重起,数据库打开了没有关闭,在打开可能就打不开了。
|
|
|
地下室#
发布于:2005-06-18 11:54
在访问第一条记录前请使用,MoveFirst()函数,不然后续访问的执针位置不可预计。
|
|
5楼#
发布于:2005-06-25 17:17
CRecordSet 类可以直接使用. 不用重载. 一般配合 CDatabase 使用.
典型应用是这样的:
|
|
6楼#
发布于:2005-06-25 17:24
下面是引用dreamday于2005-06-18 11:54发表的: 如果调用 rs.Open(csSql, CRecordSet::ForwardOnly) 使用的是 ForwardOnly 参数. 那么 MoveFirst() 不可以调用. 使用 Dynaset 参数时, 可以使用 MoveFirst() 函数. 但 dynaset 的开销比 ForwardOnly 大. 调用 rs.Open() 后. 游标位置就指向第一条记录. 所以, 可以不用调用 MoveFirst() 函数. |
|