第12章 数据库应用程序开发
第12章 数据库应用程序开发 重点 1.数据库系统和ODBC 2.CRecordSet的应用 3.示例系统中数据库操作类的设计
2013年9月
嘉兴学院计算机软件与理论研究室
共10页第1页
数据库应用程序是在数据库管理系统(DBMS)的支持下对数据库中的数据进 行加工、处理的程序,MFC提供了两种支持:ODBC和DAO。
12.1
数据库系统的基本概念
数据库系统由数据库、数据库管理系统和数据库应用系 统3部分组成,如右图: 数据库是数据的集合,由一个或多个表组成,一般将表 中的一行称作记录(record)或行(row),将表的列称作字 段(field)或列(column);
数据库系统的组成
数据库管理系统是一套程序,用来定义、管理和处理数据库与应用程序之间的联系, 例如,FoxPro、Access等; 不同的数据库在实现它的数据库管理系统时都有一些不同的特性,因而使得用某个数 据库管理系统开发的数据库应用系统无法在其他数据库管理系统上使用; 为了使一个数据库应用系统能够适用于所有的数据库管理系统,人们在数据库应用系 统和数据库管理系统之间增加了一个符合某种规范的标准接口,从而使得按照标准接 口设计的数据库应用系统可以访问所有支持标准接口的数据库管理系统。常用的标准 接口有ODBC、DAO、JDBC等,他们之间的关系如图所示: SQL(Structured Query Language,结构化查询语言)最早由IBM提出,是专门用来处 理关系数据库的基于文本的语言。SQL向数据库提供了完善而一致的接口,它不是独立 的计算机语言,需要DBMS的支持才能执行。SQL是一种标准的数据库语言,目前大多数 DBMS都支持它。嘉兴学院计算机软件与理论研究室 共10页第2页
2013年9月
12.2 ODBC基本概念 ODBC是微软公司开放服务结构中有关数据库的一个组成部分,它建立了 一组规范,并提供了一组对数据库访问的标准API。这些API利用SQL来 完成大部分任务,ODBC本身也提供了对SQL语言的支持,用户可以直接 将SQL语句送给ODBC; 基于ODBC的应用程序对数据库的操作不依赖于任何DBMS,不直接与DBMS 打交道,所有的数据库操作由对应DBMS的ODBC驱动程序完成,一个完整 的ODBC由下列几个部件组成;– 应用程序: – ODBC管理器:管理安装的ODBC驱动程序和管理数据源; – 驱动程序管理器:包含在ODBC32.DLL中,任务是管理ODBC驱动程序; – ODBC API:给数据库应用程序提供访问数据库的接口函数; – ODBC驱动程序:一些DLL,提供了ODBC和数据库之间的接口; ODBC部件关系图 – 数据源:包含数据库位置和数据库类型的信息。
在ODBC中,ODBC API不能直接访问数据库,必须通过驱动程序管理器与 数据库交换信息
。驱动程序管理器负责将应用程序对ODBC API的调用传 递给正确的驱动程序,而驱动程序在执行完相应的操作后,将结果通过 驱动程序管理器返回给应用程序。2013年9月 嘉兴学院计算机软件与理论研究室 共10页第3页
12.3
MFC的ODBC类简介
MFC的ODBC类主要包括有以下几个:– CDatabase类:负责建立与数据源的连接; – CRecordset类: 该类的一个对象代表从数据源选择的一组记录 (记录集); – CRecordView类:提供了一个表单视图与某个记录集直接相连,利 用对话框数据交换机制(DDX)在记录集与表单视图的控件之间传输数 据; – CFieldExchange类:支持记录字段数据交换(DFX),即记录集字段数 据成员与相应的数据库表的字段之间的数据交换; – CDBException类:代表ODBC产生的异常。
概括地讲,CDatabase针对某个数据库,它负责连接数据源; CRecordset针对数据源中的记录集,它负责对记录的操作; CRecordView负责界面;CFieldExchange负责CRecordset与 数据源的数据交换。2013年9月 嘉兴学院计算机软件与理论研究室 共10页第4页
12.4
CDatabase类
先构造一个CDatabase对象,然后调用Open成员函数:virtual BOOL Open(LPCTSTR lpszDSN, BOOL bExclusive = FALSE, BOOL bReadOnly = FALSE, LPCTSTR lpszConnect = "ODBC;", BOOL bUseCursorLib = TRUE);throw (CDBException, CMemoryException);CDatabase m_db;//在文档类中嵌入一个CDatabase对象 lpszDSN必须为NULL,若两处均未提供数据源名,则会显示一个数据源对话 m_db.Open("Student Registration"); //连接到一个名为Student Registration的数据源 框,用户可以在该对话框中选择一个数据源; m_db.Open(NULL,FALSE,FALSE,"ODBC;DSN=Student Registration;UID = ZYF;PWD – 参数 bExclusive:说明是否独占数据源; = 1234"); //在连接数据源的同时指定了用户账号和口令 m_db.Open(NULL);// 将弹出一个数据源对话框 – 参数bReadOnly :True则对数据源的连接是只读的,否则为可读写的;
– lpszDSN:数据源名,也可以在lpszConnect参数中包括数据源名,此时
–void 参数 lpszConnect :指定了一个连接字符串。该串中可以包括数据源名、用 virtual Close();// 断开与数据库的连接, CDatabase的析构函数中同样会自动调用该 户账号和口令等信息,字符串中的ODBC表示要连接到一个ODBC数据源上; 函数 BOOL IsOpen() const;//返回True 则表明当前有一个连接 – 参数bUseCursorLib :若为 True,则会装载光标库,否则不装载。快照需要 const CString& GetConnect() const;//获取当前的连接字符串 光标库,动态集不需要光标库;
– 若连接成功,函数返回True,否则返回False,若函数内部出现错误,则会 产生一个异常。
一些其它的有用成员函数:2013年9月 嘉兴学院计算机软
件与理论研究室 共10页第5页
12.5
CRecordSet类
12.5.1 动态集、快照、光标和光标库 共享数据的一个主要问题就是如何协调各个用户对数据源的修改,在 MFC中这取决于用户采用哪种记录集来处理; 记录集主要分为快照(Snapshot)和动态集(Dynaset)两种:– 快照型记录集提供了对数据的静态视,当其他用户改变了记录时(包括修改、 添加和删除),快照中的记录不受影响; – 动态集提供了数据的动态视,当其他用户修改或删除了记录集中的记录时, 会在动态集中反映出来。
在记录集中滚动,需要有一个标志来指明滚动后的位置。ODBC驱动程序 会维护一个光标,用来跟踪记录集的当前记录; 光标库是处于ODBC驱动程序管理器和驱动程序之间的动态链接库。光标 库的主要功能是支持快照以及为底层驱动程序提供双向滚动能力。光标 库管理快照记录的缓冲区,该缓冲区反映本程序对记录的修改和删除, 但不反映其他用户对记录的改变,由此可见,快照实际上相当于当前的 光标库缓冲区; 与快照不同,动态集不用光标库维持的缓冲区来存放记录。2013年9月 嘉兴学院计算机软件与理论研究室 共10页第6页
12.5.2 SQL查询 记录集的建立实际上是一个查询过程,SQL的SELECT语句用来查询数据 源。在建立记录集时,CRecordset会根据参数构造一个SELECT语句来查 询数据源,并用查询的结果创建记录集,SELECT语句的句法如下:SELECT field-list FROM table-name [WHERE m_strFilter] [ORDER BY m_strSort]
如果列名或表名中包含有空格,则必须用方括号把该名称括起来;
12.5.3 记录集的建立和关闭 要建立记录集,首先要构造一个CRecordset派生类对象,然后调用Open 成员函数查询数据源中的记录来建立记录集CRecordset(CDatabase* pDatabase = NULL); virtual CString Ge …… 此处隐藏:3419字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [高中教育]电子线路高频非线性部分2.1
- [高中教育]中班美术活动——我的小手
- [高中教育]常用三极管参数大全
- [高中教育]计算机常见故障及解决办法
- [高中教育]风机基础环水平度控制方法探讨
- [高中教育]机械安全工程(专升本)阶段性作业3
- [高中教育]2009年安徽省高考语文考试说明刍议
- [高中教育]unit5 let's eat公开课教案设
- [高中教育]计算机网络原理课后习题答案
- [高中教育]2016-2022年中国新能源市场研究与投资
- [高中教育]2015-2020年中国会议行业市场评估及投
- [高中教育]经销商大会峰会主持人串词开场白
- [高中教育]2014新版北师大数学三年级上册小熊购物
- [高中教育]七年级第一学期体育与健康全套教案
- [高中教育]第三章:国际金融市场
- [高中教育]六年级下册数学单元测试-2.比例 北师大
- [高中教育]2016年上海海事大学法学院624刑法之《
- [高中教育]中国碳化钙产业竞争现状及未来五年投资
- [高中教育]网络时代,我们怎么玩
- [高中教育]圆锥曲线——高中数学基础知识与典型例
- 高集医院世界艾滋病宣传日活动方案
- 苏教版六年级英语上册期末试卷含答案
- 全民枪战生化英雄模式幽灵怎么玩 生化
- 灿烂的宋元文化一导学案
- 第2章货币资金与应收款项
- 北师大版八年级下册数学第三章《分式》
- 浅析高分子材料成型加工技术
- 华南理工大学2013年度共青团先进集体及
- 教师资格科目二小学教案模板(共合集)
- 工程扩建可研报告
- 中华人民共和国海事局2014年度招录公务
- 提高农村小学生作文能力的教学尝试
- 徒手心肺复苏术操作步骤
- 毛概试题库7-15章
- 2014-2015学年度(上)初中班主任工作计
- 企业驾驶员安全生产责任书
- 第07章 不等式测试题-2016年高考文科数
- 医疗器械经营企业工作程序
- 考研英语必背36篇_彩版_精华
- 初中9月13-15假期作业 (1)