- 1、本文档共43页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MFC数库编程
CDatabase类用来提供对数据源的连接,通过它可以对数据源进行操作; CRecordSet类对象提供了从数据源中提取出表的记录集,并提供了两种操作形式:动态行集(Dynasets)和快照集(Snapshots)。 动态行集能与其他用户所做的更改保持同步 快照集则是数据的一个静态视图。 CRecordView类用来控制并显示数据库记录,该视图是直接连到一个CRecordSet对象的表单视图。但在实际应用过程中,CRecordSet类是用户最关心的,因为它为用户提供了对表记录进行操作的许多功能,如查询记录、添加记录、删除记录、修改记录等,并能直接为数据源中的表映射一个CRecordSet类对象,方便用户的操作。 3. 查询记录 使用CRecordSet类的成员变量m_strFilter、m_strSort和成员函数Open可以对表进行记录的查询和排序。在MyStudentDB的表单中添加一个编辑框和一个[查询]按钮,单击[查询]按钮,将按编辑框中的学号内容对数据表进行查询,并将查找到的记录显示在前面添加的控件中。具体过程如下: 打开应用程序的表单资源,按图所示的布局添加控件,其中添加的编辑框ID号设为IDC_SNO_QUERY,“查询”按钮的ID号设为IDC_BUTTON_QUERY。 用MFC ClassWizard为控件IDC_SNO_QUERY添加关联变量m_strQuery。 在Message Maps页面的Cex2View类中添加按钮控件IDC_BUTTON_QUERY的BN_CLICKED消息映射,并在映射函数中添加下列代码: UpdateData(); m_strQuery.TrimLeft(); if (m_strQuery.IsEmpty()){ MessageBox(要查询的学号不能为空!); return; } if (m_pSet-IsOpen()) m_pSet-Close();// 如果记录集打开,则先关闭 m_pSet-m_strFilter.Format (“sno=%s,m_strQuery); //sno是S表的字段名,用来指定查询条件 m_pSet-m_strSort = “depart; m_pSet-Open(); // 打开记录集 if (!m_pSet-IsEOF()) // 如果打开记录集有记录 UpdateData(FALSE); // 自动更新表单中控件显示的内容 else MessageBox(没有查到你要找的学号记录!); } 代码中, m_strFilter和m_strSort是CRecordSet的成员变量,用来执行条件查询和结果排序。其中,m_strFilter称为“过滤字符串”,相当于SQL语句中WHERE后的条件串;而m_strSort称为“排序字符串”,相当于SQL语句中ORDER BY后的字符串。若字段的数据类型是文本,则需要在m_strFilter字符串中将单引号将查询的内容括起来,对于数字,则不需要用单引号。 编译运行并测试,结果如图所示。 4. 编辑记录 CRecordSet类为用户提供了许多对表记录进行操作的成员函数用来添加记录、删除记录和修改记录等。 4.1 增加记录 增加记录是使用AddNew函数,但要求数据库必须是以“可增加”的方式打开的。下面的代码是在表的末尾增加新记录: void CMyStudentDBView::OnButtonAdd() { UpdateData(); m_pSet-AddNew(); m_pSet-m_sno=m_addsno; m_pSet-m_sname=m_addname; m_pSet-m_ssex=m_addsex; m_pSet-m_depart=m_adddepart; m_pSet-Update(); m_pSet-MoveLast(); m_pSet-Requery(); MessageBox(添加记录成功); m_addsno=m_addname=m_addsex=m_adddepart=; UpdateData(false); } 4.2 删除记录 可以直接使用CRecordSet::Delete函数来删除记录。需要说明的是,要使删除操作有效,还需要移动记录函数。例如下面的代码: m_pSet-Delete(); m_pSet-Requery(); MessageBox(删除成功); UpdateData(false); m_pSet-Mov
文档评论(0)