当前位置: 首页 > 图文教程 > 开发语言 > VC++ > VC++:CRecordset类中的修改、添加和删除记录

VC++
C++类对象的拷贝构造函数
使用MFC的数组类
指针专题
精通VC与MATLAB联合编程:综合举例二
C 程序的外部变量与函数
MFC 编写的仿 Windows 计算器
static_cast揭密
事件编程(二)
事件编程(一)
精通 VC 与 MATLAB 联合编程:综合举例一
.c文件和.h文件的概念与联系
过马路,左右看
google 竞赛题 SecretSum 的 C++ 解法
如何实现快捷方式中的查找目标功能
几个 Windows 到 Linux 的代码移植问题
打造自定义的 AfxMessageBox
精通VC与MATLAB联合编程:编译器的使用
禁用屏幕拷贝(Print Screen),调用派生的析构函数及其它......
基于表达式计算的科学计算器
轻松实现DES算法查看器

VC++:CRecordset类中的修改、添加和删除记录


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-12-26   浏览: 781 ::
收藏到网摘: n/a

今天和大家分享的是CRecordset中的修改、添加和删除记录,希望对大家有所帮助。要修改记录,应该按下列步骤进行:

 

调用Edit成员函数.调用该函数后就进入了编辑模式,程序可以修改域数据成员.注意不要在一个空的记录集中调用Edit,否则会产生异常.Edit函数会把当前域数据成员的内容保存在一个缓冲区中,这样做有两个目的,一是可以与域数据成员作比较以判断哪些字段被改变了,二是在必要的时侯可以恢复域数据成员原来的值.若再次调用Edit,则将从缓冲区中恢复域数据成员,调用后程序仍处于编辑模式.调用Move(AFX_MOVE_REFRESH)Move(0)可退出编辑模式(AFX_MOVE_REFRESH的值为0),同时该函数会从缓冲区中恢复域数据成员.

 

设置域数据成员的新值.

 

 

要向记录集中添加新的记录,应该按下列步骤进行:

 

调用AddNew成员函数.调用该函数后就进入了添加模式,该函数把所有的域数据成员都设置成NULL(注意,在数据库术语中,NULL是指没有值,这与C++NULL是不同的).与Edit一样,AddNew会把当前域数据成员的内容保存在一个缓冲区中,在必要的时侯,程序可以再次调用AddNew取消添加操作并恢复域数据成员原来的值,调用后程序仍处于添加模式.调用Move(AFX_MOVE_REFRESH)可退出添加模式,同时该函数会从缓冲区中恢复域数据成员.

 

设置域数据成员.

 

调用UpdateUpdate把域数据成员中的内容作为新记录写入数据源,从而结束了添加.

 

如果记录集是快照,那么在添加一个新的记录后,需要调用Requery重新查询,因为快照无法反映添加操作.

 

要删除记录集的当前记录,应按下面两步进行:

 

调用Delete成员函数.该函数会同时给记录集和数据源中当前记录加上删除标记.注意不要在一个空记录集中调用Delete,否则会产生一个异常.

 

滚动到另一个记录上以跳过删除记录.

 

 

上面提到的函数声明为:

 

virtual void Edit( );throw( CDBException, CMemoryException );

 

virtual void AddNew( );throw( CDBException );

 

virtual void Delete( );throw( CDBException );

 

virtual BOOL Update( );throw( CDBException );

若更新失败则函数返回FALSE,且会产生一个异常.

 

 

 

  在对记录集进行更改以前,程序也许要调用下列函数来判断记录集是否是可以更改的,因为如果在不能更改的记录集中进行修改、添加或删除将导致异常的产生.

 

BOOL CanUpdate( ) const; //返回TRUE表明记录是可以修改、添加和删除的.

 

BOOL CanAppend( ) const; //返回TRUE则表明可以添加记录.