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

VC++
泛型编程-转移构造函数(Generic Programming: Move Constructor)
C++中的废料收集
C语言中trim的实现
使非MFC窗口程序的窗口回调过程成为C++类的成员函数
可用于数论计算的无符号大整数类
基于位操作的类CBitBuffer
What are you, Anyway?
《新加坡程序员考题一则及分析》的讨论
关于拷贝构造函数和赋值运算符
简单模板概念
析构函数的奥秘
从软件工程的角度看const的用法
泛型编程:再现Min和Max
Tuples
运用设计模式设计MIME编码类
const传奇
使用namespace的正确方法
新加坡程序员考题一则及分析
在C++中实现属性
深入分析MFC中的CArray类

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-12-26   浏览: 795 ::
收藏到网摘: 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则表明可以添加记录.