【数据库】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,表设计和初始值如 ...
随机推荐
- svn的下载链接
想要下载svn结果网上出来都是tortoisesvn 正确的链接是 源代码 http://subversion.apache.org/ 安装包 http://www.collab.net/downlo ...
- 【Coursera】Fifth week(3)
Ethernet 在 PARC(Xerox) 发明. 第一个 Local-Area-Network (LAN 局域网). 把 PCs 连接到 激光打印机上. 在夏威夷大学,被早期的无线网络 Aloha ...
- UVa 1663 净化器
https://vjudge.net/problem/UVA-1663 题意: 给m个长度为n的模板串,每个模板串包含字符0,1和最多一个星号"*",其中星号可以匹配0或1.例如, ...
- SqlParameter 参数化模糊查询
sql += " and a.f_fullName like N'%'+@fullName+'%'";
- C# string[]转List<string>
List<string> ltProduct = new List<string>(Product.Split('|'));
- hdu 6020 MG loves apple 恶心模拟
题目链接:点击传送 MG loves apple Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 262144/262144 K (Ja ...
- Codeforces Beta Round #94 div 2 B
B. Students and Shoelaces time limit per test 2 seconds memory limit per test 256 megabytes input st ...
- python 删除列表中的字典元素
data={"} ,{"}]} print("before:\n\n",data,"\n\n") temp=- k= for i in da ...
- JS + flash 复制
js代码ZeroClipboard组件制作复制剪切板复制粘贴文字内容,一键即可复制粘贴文字内容.兼容各大主流浏览器firefox,,Chrome,IE等. 演示代码 如下: <script ty ...
- ADO.NET 批量插入
在.Net1.1中无论是对于批量插入整个DataTable中的所有数据到数据库中,还是进行不同数据源之间的迁移,都不是很方便.而 在.Net2.0中,SQLClient命名空间下增加了几个新类帮助我们 ...