【数据库】MFC ODBC(四)
7、滚动记录
CRecordset提供了几个成员函数用来在记录集中滚动。当用这些函数滚动到一个新记录时,框架会自动地把新记录的内容拷贝到域数据成员中。
void MoveNext( ); //前进一个记录
void MovePrev( ); //后退一个记录
void MoveFirst( ); //滚动到记录集中的第一个记录
void MoveLast( ); //滚动到记录集中的最后一个记录
//该函数用于滚动到由参数nRows指定的绝对位置处。若nRows为负数,则从后往前滚动。例如,当nRows为-1时,函数就滚动到记录集的末尾。注意,该函数不会跳过被删除的记录。
void SetAbsolutePosition( long nRows );
注意:如果记录集是空的,那么调用上述函数将产生异常。另外,必须保证滚动没有超出记录集的边界。
long GetRecordCount( ) const;// 调用GetRecordCount可获得记录集中的记录总数。
注意:GetRecordCount返回的实际上是用户在记录集中滚动的最远距离。要想真正返回记录总数,只有调用MoveNext移动到记录集的末尾(MoveLast不行)。
8、修改、添加和删除记录
(1)修改记录
1)调用Edit成员函数。调用该函数后就进入了编辑模式,程序可以修改域数据成员。注意不要在一个空的记录集中调用Edit,否则会产生异常。
2)设置域数据成员的新值。
3)调用Update完成编辑。Update把变化后的记录写入数据源并结束编辑模式。
m_ChangeLineSet.Edit(); //字段设置...
m_ChangeLineSet.m_Date=datatemp.Date; //更新记录
m_ChangeLineSet.Update(); //重建记录集
m_ChangeLineSet.Requery();
(2)添加记录
1)调用AddNew成员函数。调用该函数后就进入了添加模式,该函数把所有的域数据成员都设置成NULL(注意,在数据库术语中,NULL是指没有值,这与C++的NULL是不同的)。与Edit一样,AddNew会把当前域数据成员的内容保存在一个缓冲区中。
2)设置域数据成员。
3)调用Update。Update把域数据成员中的内容作为新记录写入数据源,从而结束了添加。如果记录集是快照,那么在添加一个新的记录后,需要调用Requery重新查询,因为快照无法反映添加操作。
if (m_ChangeLineSet.CanAppend()) {
m_ChangeLineSet.AddNew();
//字段设置...
m_ChangeLineSet.m_Date=datatemp.Date;
//更新记录
m_ChangeLineSet.Update();
//重建记录集
m_ChangeLineSet.Requery();
}
(3)删除记录
1)调用Delete成员函数。该函数会同时给记录集和数据源中当前记录加上删除标记。注意不要在一个空记录集中调用Delete,否则会产生一个异常。
2)滚动到另一个记录上以跳过删除记录。
//删除记录集,不需要Update
if (m_ChangeLineSet.CanUpdate())
m_ChangeLineSet.Delete();
在对记录集进行更改以前,程序也许要调用下列函数来判断记录集是否是可以更改的,因为如果在不能更改的记录集中进行修改、添加或删除将导致异常的产生。
BOOL CanUpdate( ) const; //返回TRUE表明记录是可以修改、添加和删除的。
BOOL CanAppend( ) const; //返回TRUE则表明可以添加记录。
【数据库】MFC ODBC(四)的更多相关文章
- 设有一数据库,包括四个表:学生表(Student)、课程表(Course)、成绩表(Score)以及教师信息表(Teacher)。
一. 设有一数据库,包括四个表:学生表(Student).课程表(Course).成绩表(Score)以及教师信息表(Teacher).四个表的结构分别如表1-1的表(一)~表( ...
- GZFramwork数据库层《四》单据主从表增删改查
同GZFramwork数据库层<三>普通主从表增删改查 不同之处在于:实例 修改为: 直接上效果: 本系列项目源码下载地址:https://github.com/GarsonZhang/G ...
- 2014-11-9------- 设有一数据库,包括四个表:学生表(Student)、课程表(Course)、成绩表(Score)以及教师信息表(Teacher)。
一. 设有一数据库,包括四个表:学生表(Student).课程表(Course).成绩表(Score)以及教师信息表(Teacher).四个表的结构分别如表1-1的表(一)~表( ...
- 连数据库是ODBC好还是OLEDB好
1.连数据库是ODBC好还是OLEDB好?2.是不是只有微软的数据库才可以用OLEDB?3.要切换这两种连接,是不是只需要修改连接字符串?谢谢大家了,小弟对这三个问题不解 分享到: 2009-03 ...
- 【数据库】MFC ODBC(二)
三.CRecordset类 1.IsBOF与IsEOF (1)IsBOF 如果记录集没有记录,或已经向前游动到第一个记录之前,则返回非零:否则返回0.详细说明如下: 1)访问Open函数之后,如果记录 ...
- VMware系统运维(四)SQL Server 2008 R2 新建数据库与ODBC数据
1.新建数据库,右击"新建数据库-." 2.设置数据库名,初始数据库大小,如果要配置数据库优化,可以考虑初始大小与日志大小,点击添加安装完成,即完成数据库新建. 3.ODBC数据源 ...
- 【数据库】MFC ODBC(三)
4.SQL查询 记录集的建立实际上是一个查询过程,SQL的SELECT语句用来查询数据源.在建立记录集时,CRecordset会根据一些参数构造一个SELECT语句来查询数据源,并用查询的结果创建记录 ...
- 【数据库】MFC ODBC(一)
一.动态创建ODBC数据源 ODBC API提供了动态创建数据源的函数SQLConfigDataSource.该函数的原型如下: BOOL SQLConfigDataSource ( HWND hwn ...
- MFC+ODBC+SQL Server+Visual C++
利用SQL Server 和MFC实现对数据库的简单管理 工具:SQL Server,VC6.0 步骤如下: 1.建立一个数据库studentinfo,再建立一个表testtable,表设计和初始值如 ...
随机推荐
- [luogu 1070]道路游戏(NOIP2009T4)
题目链接 题解: 题目描述好长啊.... 大概就是设一下$f[i]$表示第i秒的最大价值 首先枚举时间,然后因为机器人这一秒无论在哪里都是有可能的,所以要枚举一下每个点,又因为最多走p秒所以再枚举一下 ...
- Unity3D学习笔记(二):个体层次、绝对和局部坐标、V3平移旋转
Directional Light:平行光源/方向性光源,用来模拟太阳光(角度只与旋转角度有关,与位置无关) Point Light:点光源,用来模拟灯泡,向四周发散光源 Spotlight:锥光源/ ...
- Change the Forwarding: RMT Architecture
Change the Forwarding: RMT Architecture Note on "Forwarding Metamorphosis: Fast Programmable Ma ...
- Loadrunner安装详解
安装 1. 运行"setup.exe" 2. 点击安装,其中会有提示缺少"Microsoft Visual C++ 2005 SP1运行组件",下载这 个组件. ...
- ASP.NET MVC 中使用Ckeditor4.5 编辑器
一.在项目中添加Ckeditor4.5.11 (1) 新建 ASP.NET MVC5项目,解压缩ckeditor_4.5.11_standard.zip,在VS2015的解决方案资源管理器中将得到的“ ...
- MVC ---- Lambda表达式
Lambda表达式是比匿名函数还简洁的一种匿名方法语法 Lambda表达式缩写推演 new Func<string,int>(delegate(string str){return str ...
- sudo: /etc/sudoers is world writable sudo: no valid sudoers sources found, q...
今天操作/etc/sudoers 文件,因为该文件只读,所以sudo chmod 777 /etc/sudoers ,结果可以修改这个文件了,但是导致所有用户的sudo都不能用了 是因为在Linux中 ...
- java编程思想之并发(死锁)
一个对象可以有 synchronized 方法或其他形式的加锁机制来防止别的任务在互斥还没有释放的时候就访问这个对象. 死锁 任务有可能变成阻塞状态,所以就可能发生这样的情况:某个任务在等待另一个任务 ...
- ng的概念层次(官方文档摘录)
官方文档是这么说的: You write Angular applications by: composing HTML templates with Angularized markup, writ ...
- RabbitMQ入门_10_队列长度限制
参考资料:https://www.rabbitmq.com/maxlength.html RabbitMQ 有两种方式限制队列长度,第一种是对队列中消息总数进行限制: gordon.study.rab ...