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

VC++
宏的妙用
泛型编程与设计新思维
C++中的虚函数(一)
C++模板元编程
C++多态技术
通用结构复制函数
<C++实践系列>C++中的虚函数(virtual function)
<C++实践系列>C++中的引用(reference)
<C++实践系列>C++中的异常(exception)
<C++实践系列>C++中的模板(template)
构造函数中的this指针
串行化(Serialization)
二进制浏览、编辑的实现
介绍一个模板动态数组
VC++界面一揽子解决方案(第三版) 介绍
VC++通用GIS功能开发解决方案 2.0v 介绍
确定有穷自动机分析内核
委托、信号和消息反馈的模板实现技术
按照类型名称动态创建对象
Boost中应用的泛型编程技术

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


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