版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第9章数据库应用技术概述9.1数据库访问接口9.1
数据库访问接口应用程序通过数据库接口访问数据库,在Windows平台下主要有如下几种接口:(1)开放数据库互连(ODBC)(2)数据访问对象(DAO)
(3)OLEDB
(4)ADO对象 (5)ADO.NET(6)内嵌式SQL(7)远程数据库对象(RDO)(8)DB库ODBCODBC
Microsoft公司开放服务结构中有关数据库的一个组成部分,它建立了一个规范,并提供了一组对数据库访问的标准API(应用程序编程接口),这些API利用SQL来完成其大部分任务,这些API独立于不同厂商的数据库管理系统(DBMS),也独立于具体的编程语言。一个基于ODBC的应用程序对数据库的操作不依赖任何DBMS,无论是Access、VisualFoxPro、Oracle还是SQLServer数据库,均可用ODBCAPI进行访问ODBC的最大优点是能以统一的方式处理各种数据库,如图9.1所示,应用层通过ODBC层与数据层进行信息交换。
ODBC在数据访问中的作用DAO
DAO是一种面向对象的接口,但它不是可视化的对象,使用它全部都要靠编码来完成,DAO是设计关系型数据库系统结构的对象类的集合。它提供了完成管理系统所需的全部操作的属性和方法,包括创建数据库、定义表、字段和索引、建立表间的关系、定位和查询数据库等工具。在VB中提供了两种与Jet数据库引擎接口的方法:Data控件和数据访问对象(DAO)。Data控件不需编程就能访问数据库,但可实现功能较少,而DAO数据访问对象则是全面控制数据库的完整编程接口。Data控件将常用的DAO功能封装在其中,它与DAO控件的关系就好像内存与Cache之间的关系一样,所以这两种方法并不是互斥的。OLEDB
OLEDB是一种技术标准,目的是提供一种统一的数据访问接口,它是微软公司实现通用数据访问目标的重要部件。OLEDB不仅包括微软资助的标准数据接口ODBC的结构化查询语言,还面向其他非SQL数据类型。OLEDB既可以访问关系数据库又可以访问非关系数据库。只要有OLEDB提供者,程序就可以通过OLEDB的COM接口来访问该数据源。
OLEDB应用程序通过ADO和OLEDB接口访问数据源示意图ADO
ADO是一个用于存取数据源的COM组件的面向对象的、与语言无关的应用程序编程接口,它对数据源的访问是通过OLEDB实现的,也提供了编程语言和统一数据访问方式OLEDB的一个中间层。ADO允许开发人员编写访问数据的代码而不用关心数据库是如何实现的(只关心到数据库的连接)。同时,特定数据库支持的SQL命令仍可以通过ADO中的命令对象来执行。ADO包含了一组优化的访问数据的专用对象集,使用ADO提供的编程模型可以访问几乎所有的数据源,包括各种数据库、电子邮件、文件系统、文本、图形、自定义业务对象等。ADO是建立在OLEDB之上的高层接口集,简化了OLEDB模型。ADO.NET
ADO.NET提供对MicrosoftSQLServer等多种数据源及通过OLEDB和XML公开的数据源的一致访问。应用程序可以使用ADO.NET来连接到数据源并检索、操作和更新数据。ADO.NET能有效地从数据操作中将数据访问分解为多个可以单独使用或前后使用的不连续组件。ADO.NET是ADO的发展。ADO.NET的设计目的是从数据操作中分解出数据访问,ADO.NET的两个核心组件完成了这个任务,它们是DataSet和DataProvider(包括Connection、Command、DataReader和DataAdapter等在内的组件)。内嵌式SQL、RDO、DB库内嵌式SQL(EmbeddedSQL,ESQL):C语言(或VisualC++)支持内嵌SQL语句访问数据库。含有内嵌SQL语句的程序首先要经过预编译,将内嵌SQL语句翻译成对数据库的调用。为了得到最终的可执行程序,需要连接相关支持库。在这种方式中,使用者要存取数据库不再通过API函数,而是直接在程序中输入要查询的叙述,因此SQL被当成是程序中的部分语法,而不是函数的参数。远程数据库对象(RemoteDataObjects,RDO):它提供了一组对象模型访问ODBC数据源。它包装了ODBC底层的所有API函数。另外,它还提供了不用API函数就能访问ODBC数据库的简单方法。DB库(DB-Library):DB-Library是一组由Microsoft提供的直接访问SQLServer服务器的底层函数,它与Net-Library及网络协议直接交互,是一种较ODBC、DAO和ADO等更低层的应用程序编程接口。如果直接使用DB-Library函数对SQLServer进行访问,访问速度快,效率高,但可能会增加编程的复杂性。集中式DB结构分布式处理的分布数据的分布功能的分布9.2数据库应用体系结构集中式DB结构
早期的数据库系统是主从式(主机/终端式)系统,是一种集中式体系结构,其主要特点是单点数据和单点处理方式。
9.2数据库应用体系结构
分布式处理的分布:网络中各个节点上用户的应用程序向同一个DB存取数据,然后在各自节点的计算机上进行相应的处理。仍然属于集中式DB范畴。数据的分布:数据物理分布在计算机网络的不同节点,这些数据在逻辑上是一个整体,构成一个逻辑数据库。功能的分布:网络上每个节点都是一个通用计算机,一些节点上的计算机专门用于执行DBMS功能,称为DB服务器,而另一些节点上的计算机则专门处理用户的应用程序,称为客户机。9.2数据库应用体系结构C/S结构的基本原则是将计算机应用的任务分解成多个子任务,由多台计算机分工完成,即“功能分布”原则。客户机的任务主要包括管理用户界面、接收用户数据、处理应用逻辑、生成数据库请求、向服务器发送数据库请求、从服务器接收结果、格式化结果等。服务器的任务主要有接收来自客户机的数据库请求、处理对数据库的请求、格式化结果并传给客户机、进行完整性检查、维护数据字典和索引、处理数据恢复、优化查询/更新处理。9.2.1客户机/服务器工作模式C/S系统的主要技术特征有如下几种:(1)功能划分(2)共享资源(3)不对称协议。(4)定位透明性。(5)基于消息的交换。(6)可扩展性。9.2.2C/S模式的主要技术特征在C/S环境下,客户机、服务器和中间件三大部分构成了C/S模式的基础结构。9.2.3C/S系统体系结构服务器:服务器最典型的任务是提供数据服务。服务器应能提供高速大容量的存储能力,强大的数据处理和管理能力,以及并发运行多个进程的能力,还应提供包括通信、电子邮件和事务处理等能力。客户机:C/S应用是以客户机为中心的,客户机可以感知到服务器提供的服务,客户机主要完成应用界面和交互式功能。中间件:中间件泛指客户机和服务器之间的软件,也称OS的接口软件。中间件可分为通用中间件和专用中间件。其中,通用中间件包括各种网络操作系统、各种网络传输协议。9.2.3C/S系统体系结构两层C/S结构9.2.3C/S系统体系结构三层C/S结构WWW的三层C/S结构
9.2.3C/S系统体系结构多层C/S结构
9.2.3C/S系统体系结构
数据分布的主要目的是为了提高访问的局部性,即通过数据的合理分布,尽可能地使更多的数据能够就近存取,以减少远距离的数据访问,同时也减轻了服务器的负担。9.2.4分布式数据库系统9.3基于B/S架构的数据库应用程序与传统方式相比,基于B/S架构的数据库应用程序具有如下优点:(1)在网络应用迅速普及的今天,可以通过各种设备来方便地访问数据库,实现跨平台操作。(2)由HTML或XML充当Web信息的组织方式,能统一和简化软件开发过程。(3)一般来说,客户端只需使用浏览器访问数据库,无须额外的客户端软件,这就使得用户可以通过网络很方便地访问数据库信息。9.3基于B/S架构的数据库应用程序基于Web的应用程序开发中的客户端、服务器端、数据库端的层次关系及各自含有的主要内容列于左图中。9.4ODBC数据访问接口及实例操作Windows中集成了各种流行DBMS的ODBC驱动程序,如没找到所使用的DBMS的ODBC接口,需先安装才能建立数据源。SQLServer2000提供的ODBC驱动器为SQLSRV32.DLL。Windows平台提供了ODBC配置工具,可以方便地添加、删除和修改ODBC数据源。9.4.1ODBC概述ODBC数据源配置及使用【任务过程】(1)确认“SQLServer服务管理器”对话框中“COMPUTER”实例处于运行状态。(2)打开“控制面板”→“管理工具”,找到“数据源ODBC”,双击后打开“ODBC数据源管理器”对话框。ODBC数据源配置及使用(3)切换到“系统DSN”选项卡,单击“添加”按钮,进入“创建新数据源”对话框。(4)选择驱动程序列表框中的“SQLServer”,单击“完成”按钮,出现“创建到SQLServer的新数据源”对话框。(5)在名称框中输入“DSN_TXL”,服务器下拉列表中选择“COMPUTER”。ODBC数据源配置及使用(6)单击“下一步”按钮,打开对话框,选择“使用用户输入登录ID和密码的SQLServer验证”,输入登录ID“sa”和密码“test”。创建时要注意权限,在界面单击“下一步”按钮如出现错误提示信息,则需到企业管理器设置相应访问权限。(7)单击“下一步”按钮,打开所示的对话框,更改默认的数据库为“Addressbook”。ODBC数据源配置及使用(8)单击“下一步”按钮,打开对话框,这里可以使用默认设置不修改。如果需要保存长时间运行的查询日志及ODBC驱动程序统计日志,可以选择对应复选框,并设定保存位置及文件名。(9)单击“完成”按钮,出现所示对话框,单击“测试数据源”按钮,系统测试数据源的连接是否成功,如果成功,系统返回如图起始所示界面,不同的是,该界面中增加了新的数据源“DSN_TXL”;如果不成功,请检查整个设置过程是否正确。ODBC数据源配置及使用(10)单击“测试数据源”按钮,出现所示界面,提示连接成功。使用ODBC 用ODBC接口操作数据库的一般步骤是: (1)建立与ODBC数据源的连接。 (2)对数据源进行若干操作。 (3)关闭数据源。 如果ODBC驱动器支持事务,步骤(2)可以在一个事务中进行,操作成功则提交事务,否则回滚。ODBCAPI编程所有的ODBC函数都以SQL开始,如SQLExecute、SQLAllocHandle。如果一个ODBCAPI函数执行成功,则返回SQL_SUCCESS或SQL_SUCCESS_WITH_INFO,SQL_SUCCESS指示可通过诊断记录获取有关操作的详细信息,SQL_SUCCESS_WITH_INFO指示应用程序执行结果带有警告信息,可通过诊断记录获取详细信息。如果函数调用失败,返回码为SQL_ERROR。ODBCAPI编程一般地,编写ODBC程序主要有以下步骤:(1)连接到数据源(2)初始化应用,准备并执行SQL语句(3)执行SQL语句(4)获取记录集(5)记录的添加、删除和更新(6)事务处理(7)断开数据源9.4.2MFCODBC数据库类MFC的ODBC类对复杂的ODBCAPI进行了封装,提供了简单的调用接口来管理ODBC数据库。MFC的ODBC类主要包括CDatabase类、CRecordset类、CRecordView类、CFieldExchange类和CDBException类。概括地讲,CDatabase负责连接数据源;CRecordset负责对记录的操作;CRecordView负责界面,CFieldExchange负责CRecordset与数据源的数据交换等。9.4.3应用案例VC++6.0中使用ODBC开发个人通讯录系统在VC++6.0中使用ODBC开发一个个人通讯录系统,然后,编写ODBC数据库应用程序,显示记录的内容,并具有添加、删除、保存、取消功能。9.4.3VC++6.0中使用ODBC开发个人通讯录系统1.数据库及表的创建:利用SQLServer2000创建一个AddressBook数据库,数据库中只有一个Person表,记录联系人的相关信息。数据库名为AddressBook;表名为Person。字段数据类型说明是否主码是否空personIDint编号,自动增长型是否personNamenvarchar(50)联系人姓名否否personSexnvarchar(4)联系人性别否是personBirthydatetime联系人出生日期否是personNationnvarchar(20)联系人民族否是personPhonenvarchar(20)联系人家庭电话否是personMobilenvarchar(20)手机号码否是personQQnvarchar(20)QQ码否是personEmailnvarchar(50)E-mail否是personMemonvarchar(50)备注否是personTypenvarchar(15)联系人类型否是9.4.3VC++6.0中使用ODBC开发个人通讯录系统2.构造数据库应用程序:(1)首先启动VisualC++6.0的集成开发环境,选择“文件”(File)菜单下的“新建…”(New)命令,打开“新建”对话框,在对话框中选择“工程”(Project)选项卡,工程类型设为“MFCAppWizard(exe)”,在“工程名”(ProjectName)中输入设定的工程名“AddressBook”,“位置”(Location)中选择将要创建工程的目录,单击“确定”按钮。
9.4.3VC++6.0中使用ODBC开发个人通讯录系统(2)显示出“MFCAppWizard-Step1”,选择“单个文档”(SingleDocument)单选框,并保证“文档/查看体系结构支持?”(Document/Viewarchitecturesupport?)被选中,以创建一个文档视图体系结构的单文档界面应用程序,单击“下一步”(Next)按钮。
9.4.3VC++6.0中使用ODBC开发个人通讯录系统
(3)在“MFCAppWizard-Step2of6”中,选择“查看数据库不使用文件支持”(Databaseviewwithoutfilesupport)。9.4.3VC++6.0中使用ODBC开发个人通讯录系统(4)单击“DataSource…”(数据源)按钮,弹出“DatabaseOptions”对话框,在“Datasource”中选择“ODBC”并选择数据源为在本章前面提到过的“DSN_TXL”。(5)单击“OK”(确认)按钮后,在弹出的“SelectDatabaseTables”对话框中,选择表“dbo.Person”,单击“OK”(确认)按钮后返回“MFCAppWizard-Step2of6”。9.4.3VC++6.0中使用ODBC开发个人通讯录系统(6)单击“Finish”按钮,显示相关的工程信息。9.4.3VC++6.0中使用ODBC开发个人通讯录系统(7)单击“确定”按钮后,MFCAppWizard就自动创建了应用程序的基本框架。(8)初始的对话框设计器如图所示,删除在IDD_ADDRESSBOOK_FORM对话框中所有的控件。9.4.3VC++6.0中使用ODBC开发个人通讯录系统(9)在对话框中添加5个StaticText控件、5个EditBox控件、4个Button控件。(10)在第一个StaticText控件上单击鼠标右键,弹出快捷菜单,选择其中的“属性”(Property)项,弹出“TextProperties”对话框。将其中的“标题”(Caption)属性设为“姓名”,利用同样的方法将其他4个StaticText的标题属性分别改为:性别、民族、电话、手机。9.4.3VC++6.0中使用ODBC开发个人通讯录系统(11)选择第一个EditBox控件,单击鼠标右键,弹出快捷菜单,选择其中的“属性”(Property)项,弹出“EditProperties”对话框,将“ID”属性设为“IDC_EDIT1”。利用同样的方法,将其余EditBox控件的ID属性依次改为:IDC_EDIT2、IDC_EDIT3、IDC_EDIT4、IDC_EDIT5。9.4.3VC++6.0中使用ODBC开发个人通讯录系统(12)选择第一个Button控件,在它的属性对话框中,将ID和标题改为“IDC_APPEND”和“追加”,同样将其他三个的ID和标题改为“IDC_DELETE”、“IDC_SAVE”、“IDC_CANCEL”和“删除”、“保存”、“取消”。9.4.3VC++6.0中使用ODBC开发个人通讯录系统(13)选择菜单“查看”(View),然后选择“建立类向导”(ClassWizard),打开“MFCClassWizard”对话框。选择其中的“MemberVariables”选项卡,为文本控件增加成员变量和控制变量。在Classname中选择类“CAddressBookView”,在ControlIDs中选择“IDC_EDIT1”,单击“AddVariable…”按钮,弹出“AddMemberVariable”对话框。在Membervariablename中选择“m_pSet→m_personName”,在Category中选择“Value”,在Variabletype中选择“CString”,单击“OK”按钮后便创建了一个成员变量。9.4.3VC++6.0中使用ODBC开发个人通讯录系统根据上述方法,添加所有的成员变量。IDMembervariablenameCategoryVariabletypeIDC_EDIT1M_pSet->m_personNameValueCStringIDC_EDIT2M_pSet->m_personSexValueCStringIDC_EDIT3M_pSet->m_personNationValueCStringIDC_EDIT4M_pSet->m_personPhoneValueCStringIDC_EDIT5M_pSet->m_personMobileValueCString9.4.3VC++6.0中使用ODBC开发个人通讯录系统以上变量建立了控件与记录集中字段的绑定关系。9.4.3VC++6.0中使用ODBC开发个人通讯录系统(14)在Classname中选择“CAddressBookView”类,在ControlIDs中选择“IDC_EDIT1”并单击“AddVariable…”按钮,弹出对话框。在“Membervariablename”中输入“m_ctlEdit1”,在Category中选择“Control”,在Variabletype中选择“CEdit”,单击“OK”按钮后便创建了一个成员变量。9.4.3VC++6.0中使用ODBC开发个人通讯录系统用同样的方法,添加其他控制变量。添加控制变量后的“MFCClassWizard”对话框如图所示。9.4.3VC++6.0中使用ODBC开发个人通讯录系统(15)选择“MessageMaps”选项卡,如图所示。9.4.3VC++6.0中使用ODBC开发个人通讯录系统(16)在Classname中选择“CAddressBookView”,在ObjectIDs中选择“IDC_APPEND”,在Messages中选择“BN_CLICKED”,单击“AddFunction…”按钮,弹出对话框。单击“OK”按钮选择默认的处理函数,返回“MFCClassWizard”对话框。9.4.3VC++6.0中使用ODBC开发个人通讯录系统(17)单击“EditCode”按钮,添加相应的处理函数,增加对OnAppend处理代码。voidCAddressBookView::OnAppend(){//TODO:Addyourcontrolnotificationhandlercodehere/*Flag为添加标志,A表示添加,若处于添加过程中再次单击“添加”按钮,则首先保存当前添加记录,然后再次执行添加过程。*/if(Flag=='A'){OnSave(); //OnSave包含有保存记录语句
}m_pSet->A
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年轮椅操作与安全转运题库(附答案)
- 工艺开关校验记录
- 广东百万联考-2026届高三-2026年2月-生物-答案
- 【8道第一次月考】安徽省蚌埠市G5联盟2025-2026学年八年级上学期10月联考道德与法治试题(含解析)
- 湖南省师范大学附属中学2026-2027学年高二上学期开学考试语文试卷
- 天津市宝坻区第四中学2025-2026学年高一上学期第一次月考物理试卷(含答案)
- 河北省部分高中2027届高三上学期开学考试物理试卷(含答案)
- 保护濒危物种的地方性法规
- 【六年级语文】词语搭配练习
- 2026年陕西专升本语文考试试卷及答案
- 《种子生产技术》课件-11-第三章第二节 玉米自交系种子生产技术
- 档案审核人员管理制度
- 肾内科患者血液透析中抗凝药物使用
- 腹部推拿课件
- 大连外国语学院英语语言文学专业研究生培养方案
- (正式版)DGTJ 08-2200-2024 建筑隔热涂料应用技术标准
- 退役兵防诈骗知识培训课件
- 2025孙子兵法考试题目及答案
- 国防光缆保护知识培训内容课件
- 神经内科科室宣传课件
- 高价值专利培训课件
评论
0/150
提交评论