《6第六章 网络数据库编程技术.ppt》由会员分享,可在线阅读,更多相关《6第六章 网络数据库编程技术.ppt(67页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第六章网络数据库编程技术第六章网络数据库编程技术6.1C/S模式下的编程技术6.2B/S模式下的编程技术6.1C/S模式下的编程技术n6.1.1MSVisualC+n6.1.2BorlandDelphi6.1.1MSVisualC+nVC中提供的数据库访问技术有:ODBCAPIMFCODBCDAOOLEDBADOn传统的ODBC访问速度较慢。OLEDB和ADO都是基于COM技术,使用该技术可以直接访问数据库的驱动程序,速度大大提高。n通过OLEDB和ActiveX技术,可以利用VC提供的各种组件,控件和第三方提供的组建。从而实现应用程序组件化。n传统ODBC只能访问关系数据库。VC中提供了OL
2、DDB技术可以解决该问题。MFCODBC类nMFC编程微软基础类库(MFC,MicrosoftFoundationClass)是微软为Windows程序员提供的一个面向对象的Windows编程接口,它大大简化了Windows编程工作。n使用MFC类库的好处是:n首先,MFC提供了一个标准化的结构,这样开发人员不必从头设计创建和管理一个标准Windows应用程序所需的程序,而是从一个比较高的起点编程,故节省了大量的时间;n其次,它提供了大量的代码,指导用户编程时实现某些技术和功能。MFC库充分利用了Microsoft开发人员多年开发Windows程序的经验,并可以将这些经验融入到你自己开发的应用
3、程序中去。对用户来说,用MFC开发的最终应用程序具有标准的、熟悉的Windows界面,这样的应用程序易学易用;n另外,新的应用程序还能立即支持所有标准Windows特性,而且是用普通的、明确定义的形式。n事实上,也就是在WindowsAPI基础上定义了一种新的标准MFC标准。n为简化使用ODBCAPI,VC提供了MFCODBC类,封装了ODBCAPI。n主要MFCODBC类如下:CDatabase类:一个CDatabase对象表示一个到数据源的连接,通过它可以操作数据源。一般不需要直接使用CDatabase对象,因为CDecordSet对象可以实现大多数功能,但在进行事务处理时,CDataba
4、se就起到关键作用。CRecordSet类:一个CRecordSet对象代表一个从数据源选择的一组记录的集合记录集。记录集有两种形式:snapshot和dynaset。前者表示是静态视图。后者表示记录集与其它用户对数据库的更新保持同步。CRecordView类:是在空间中显示数据库记录的视图。这种视图是直接连到一个CRecordSet对象的格式视图。他从一个对话框模版资源创建。并将CRecordSet对象的字段显示在对话框模版的控件里。对象利用DDX和RFX机制。使格式上的控件和记录集的字段之间数据移动自动化。CDBException类:由Cexception类派生,以3个继承的变量反映对数据
5、库操作时的异常。M_nRetCode:ODBC返回码。M_strError:字符串,描述造成抛出异常的错误原因。M_strStateNativeOrigin:字符串,描述以ODBC错误码表示的异常错误。ADOnADO是Microsoft为最新和最强大的数据访问范例OLEDB而设计的,是一个便于使用的应用程序层接口。nADO特点:ADO能够编写应用程序以通过OLE.DB提供者访问和操作数据库服务器中的数据。ADO最主要的优点是易于使用、速度快、内存支出少和磁盘读写少。ADO在关键的应用方案中使用最少的网络流量,并且在前端和数据源之间使用最少的层数,n所有这些都是为了提供轻量、高性能的接口。1、引
6、入、引入ADO库文件库文件n使用ADO前必须在工程的stdafx.h头文件里用直接引入符号#import引入ADO库文件,以使编译器能正确编译。代码如下所示:#importc:programfilescommonfilessystemadomsado15.dllno_namespacesrename(EOFadoEOF)n这行语句声明在工程中使用ADO,但不使用ADO的名字空间,并且为了避免常数冲突,将常量EOF改名为adoEOF。现在不需添加另外的头文件,就可以使用ADO接口了。2、初始化、初始化OLE/COM库环境库环境n须注意的是,ADO库是一组COM动态库,这意味应用程序在调用ADO前
7、,必须初始化OLE/COM库环境。在MFC应用程序里,一个比较好的方法是在应用程序主类的InitInstance成员函数里初始化OLE/COM库环境。BOOLCMyAdoTestApp:InitInstance()if(!AfxOleInit()/这就是初始化COM库AfxMessageBox(“OLE初始化出错!”);returnFALSE;3、ADO接口简介接口简介nADO库包含三个基本接口:_ConnectionPtr接口、_CommandPtr接口和_RecordsetPtr接口。_ConnectionPtr接口返回一个记录集或一个空指针。通常使用它来创建一个数据连接或执行一条不返回任
8、何结果的SQL语句,如一个存储过程。_CommandPtr接口返回一个记录集。它提供了一种简单的方法来执行返回记录集的存储过程和SQL语句。n如果要频繁访问数据库,并要返回很多记录集,那么,你应该使用全局_ConnectionPtr接口创建一个数据连接,然后使用_CommandPtr接口执行存储过程和SQL语句。_RecordsetPtr是一个记录集对象。与以上两种对象相比,它对记录集提供了更多的控制功能,如记录锁定,游标控制等。n同_CommandPtr接口一样,它不一定要使用一个已经创建的数据连接,可以用一个连接串代替连接指针赋给_RecordsetPtr的connection成员变量,让
9、它自己创建数据连接。n如果要使用多个记录集,最好的方法是同Command对象一样使用已经创建了数据连接的全局_ConnectionPtr接口,然后使用_RecordsetPtr执行存储过程和SQL语句。6.1.2BorlandDelphinDelphi中处理数据库主要有两种方法,也就是BDE、ADO,从Delphi6.0开始还加入了一种dbExpress方法。另外,Delphi还提供了专门处理Borland公司自己的数据库产品InterBase数据库的专门的方法。BDEnBDE(BorlandDatabasEngine),是Delphi中最古老的技术,从delphi2.0加入BDE技术以后,一
10、直是Delphi处理数据库的事实上的标准。BDE是一个基于驱动程序的体系结构,每一种数据格式或数据源都有一种驱动程序来驱动相近的数据源。BDE可以很好的支持现在最流行的ODBCAPI方法,ODBC是一种C/C+应用程序编程接口(API),无论是对任何一种客户/服务器关系型数据库管理系统(RDBMS),还是最流行索引顺序访问方法(ISAM)数据库(Jet、Foxpro),都能很好的访问。n同时,由于BDE的驱动程序主要直接来自于第三方开发商,所以,对于像Oracle这些非微软的数据库,执行效率上比较高。正是这些特点,使BDE技术还是得到了很多数据库开发程序员的欢迎。nBDE是Borland开发的
11、最成熟的数据控制对象集,它对于像Oracle这些第三方数据库,由于是直接由开发商提供了驱动程序,所以执行效率比较高,到现在仍然受到不少程序员的欢迎。n它里面主要是table和Query两个数据源控件。从性能和使用方法都和ADOtable和ADOQuery相似的Recordset属性和方法除外,这是ADO特有的n值得注意的是,它们连接数据源的方式采用了别名,也就是应用的时候事先一定要设计好ODBC数据源,并给定数据源一个别名。ADOnADO技术是微软提出来的处理关系型数据库和非关系型数据库的新技术,它基于微软被称为OLEDB的数据访问模式,它是专门为了给大范围商业数据源提供访问而设计的,包括传统
12、的关系型数据表、电子邮件系统、图形格式、Internet资源等。ADO所需内存更少,更适合大流量和大事务量的网络计算机系统。n由于ADO技术的迅速普及,从Delphi5.0开始,加入了ADO技术的模块,并逐步成为Delphi数据库设计的主流。但是,和VB的ADODC相比,它还是有所不同的,在数据绑定上,它更多的吸收了BDE的特点,以做到和原来的程序兼容,同时,它又可以接受标准ADO技术的各种属性和方法,在接受这些属性和方法时,它是和数据绑定控件脱离的,当然从某种意义上来说,这种方案提高了执行效率,给设计人员以更多的选择。nADO面板一共有7个组件:ADOConnection:主要用于建立数据库
13、的连接;ADOdataSet:ADO提取和操作数据库的主要数据集,可以直接连接到数据库,也可以通过ADOConnection连接到数据库。ADOtable:主要用以操作和提取单个基表的数据,可以直接连接到数据库,也可以通过ADOConnection连接到数据库。ADOquery:通过SQL语言提取数据,其连接数据库的方式和前两种一样。ADOStoredProc:这个组件专门用于运行数据库中的存储过程。ADOCommand:该组件用于运行一些SQL命令,这个组件可以和支持数据集的组件一起使用,也可以直接从一个基表中提取一个数据集。RDSConnection:一个进程或一台计算机传递到另一个进程或
14、计算机的数据集合。为了连接数据绑定控件,上述组件往往要和处于DataAccess中的Datasource配合使用。dbExpressndbExpress是Delphi6.0加入的最新的数据库模块,它不使用缓存,可以快速浏览大量的数据,但是,不使用缓存就不能更改,所以它的标准方式是只读的。它一个重要的特点是交叉平台,可以和Linux数据库连接,速度相当快。ndbExpress是一个跨平台的、不依赖于数据库的一个独立的层。它提供了一些方法用于动态SQL的处理。它定义了一个接口用于访问不同的SQL服务器,并为各种数据库提供了驱动程序。n这些驱动程序在Windows和Linux下都能使用(Window
15、s下为动态连接库.DLL,而在Linux下为共享对象.so文件)。这种API驱动,减少了数据库引擎需要的额外开销。n标准的dbExpress数据库应用是不使用数据缓存的,由于保持核心运行时数据库访问层的简单和轻便。所以,dbExpress提供了高性能的数据库连接,运行速度很高。但是,不用数据缓存将无法修改数据,而且,指针的移动也是单向的。为了能够修改数据,dbExpress也提供了一种使用数据缓存的控件,当然这无疑也会影响到效率。n目前在dbExpress能够应用的数据库有Qracle、MySQL、DB2和InterBase,6.2B/S模式下的编程技术6.2.1CGI技术6.2.2ASP技术
16、6.2.3JSP技术6.2.4PHP技术6.2.5ASP.NET技术6.2.1CGI技术nCGI(CommonGatewayInterface,公用网关接口)是一种实现动态网页的机制。可以使用不同的程序编写适合的CGI程序。如VisualBasic、Delphi或C/C+等,n将已经写好的程序放在WEB服务器的计算机上运行,再将其运行结果通过WEB服务器传输到客户端的浏览器上。n通过CGI建立WEB页面与脚本程序之间的联系,并且可以利用脚本程序来处理访问者输入的信息并据此作出响应。n事实上,这样的编程方式比较困难而且效率低下,因为你每一次修改程序都必须重新将CGI程序编译成可执行文件。n最常用
17、于编写CGI技术的语言是Perl(PracticalExtractionandReportLanguage,文字分析报告语言),它具有强大的字符串处理能力,特别适合用于分割处理客户端form提交的数据串;用它来编写的程序后缀为.pl。n如:简单的例子hello.pl#!/usr/bin/perl$Hello=Hello,CGI;#字符串变量;$Time=2;print$Hello,forthe,$Time,ndtime!,n;#输出一句话;#Endhello.pln输出结果:Hello,CGIforthe2ndtime!n程序中第一个注释行具有特殊的含义,它是UNIX系统中shell的一条指令,表示在命令行上运行其后的命令。第一行是必需的,/usr/bin/perl提供了Perl解释器的完整路径名。例中的井号(#)为Perl语言中的注释字符。Perl技术参考站点:http:/。nCGI调用数据库需要安装DBI(DataBaseInterface,数据库接口技术)。nDBI提供了基于Perl的标准界面连接到各种不同的SQL引擎上。n各种数据库的DBI模块可在http:/
限制150内