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

VC++
在类VC的界面实现中加入目录树
软件换肤技术在 BCB 中的实现
利用非模窗口生成MDI介面
报表输出轻松搞定
Windows 中不规则窗体的编程实现
解说Win32的窗口子类化
使用测试优先方法开发用户界面
一个简单的登录对话框的实现
一个简单的日记本程序
从资源中加载皮肤
一个在RichEdit中添加表情图象的类
ActiveSkin 4.3 软件换肤在VC中的实现
一种另类“关于(About)”对话框的动态显示方法
对话框打印预览及打印
关于如何换肤、子类化的解决方案
制作 MSN、QQ 的消息提示窗口
如何对 BCGControlBarPro 进行换肤
定制个性化的对话框窗口类
改变窗口中的光标形状
更新MFC中的视图,跟踪.NET Framework中的事件

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


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