1.3 数据库应用系统
1.3.1数据库的连接方式
客户端应用程序或应用服务器向数据库服务器请求服务时,必须首先和数据库建立连接。虽然不同的RDBMS都遵循SQL标准,但不同厂家开发的RDBMS有差异,如存在适应性和可移植性等方面的问题。因此,人们开始研究和开发连接不同RDBMS的通用方法、技术和软件。
1.ODBC数据库接口
ODBC即开放式数据库互连(Open DataBase Connectivity),是微软公司推出的一种实现应用程序和关系数据库之间通信的接口标准。符合标准的数据库就可以通过SQL语言编写的命令对数据库进行操作,但只针对关系数据库。目前所有的关系数据库都符合该标准(如SQL Server, Oracle, Access, Excel等)。
ODBC本质上是一组数据库访问API(应用程序编程接口),它由一组函数调用组成,核心是SQL语句,其结构如图1.8所示。
图1.8 ODBC数据库接口
在具体操作时,首先必须用ODBC管理器注册一个数据源。管理器根据数据源提供的数据库位置、数据库类型及ODBC驱动程序等信息,建立起ODBC与具体数据库的联系。这样,只要应用程序将数据源名提供给ODBC, ODBC就能建立起与相应数据库的连接。
2.OLE DB数据库接口
OLE DB即数据库链接和嵌入对象(Object Linking and EMBedding DataBase)。OLE DB是微软提出的基于COM思想且面向对象的一种技术标准,其目的是提供一种统一的数据访问接口来访问各种数据源。
这里所说的“数据”除了标准的关系型数据库中的数据之外,还包括邮件数据、Web上的文本或图形、目录服务(Directory Services)、主机系统中的文件和地理数据以及自定义业务对象等。
OLE DB标准的核心内容就是,提供一种相同的访问接口,使得数据的使用者(应用程序)可以使用同样的方法访问各种数据,而不用考虑数据的具体存储地点、格式或类型,其结构如图1.9所示。
图1.9 OLE DB数据库接口
3.ADO数据库接口
ADO(ActiveX Data Objects)是微软公司开发的基于COM的数据库应用程序接口,通过ADO连接数据库,可以灵活地操作数据库中的数据。
图1.10所示为应用程序通过ADO访问SQL Server数据库接口。从图中可看出,使用ADO访问SQL Server数据库有两种途径:一种是通过ODBC驱动程序,另一种是通过SQL Server专用的OLE DB Provider,后者有更高的访问效率。
图1.10 ADO访问SQL Server的接口
随着网络技术的发展,网络数据库以及相关的操作技术也越来越多地应用到实际中,而数据库操作技术也在不断地发展完善。ADO对象模型进一步发展成了ADO.NET。ADO.NET是.NET FrameWork SDK中用于操作数据库的类库总称。ADO.NET相对于ADO的最大优势在于,对数据的更新修改可在与数据源完全断开连接的情况下进行,然后再把数据更新的结果和状态传回到数据源,这大大减少了过多的连接对数据库服务器资源的占用。
4.ADO.NET数据库接口
ASP.NET使用ADO.NET数据模型。该模型从ADO发展而来,但它不只是对ADO的改进,而是采用了一种全新的技术。主要表现在以下几个方面。
(1)ADO.NET不是采用ActiveX技术,而是与.NET框架紧密结合的产物。
(2)ADO.NET包含对XML标准的完全支持,这对于跨平台交换数据具有重要的意义。
(3)ADO.NET既能在与数据源连接的环境下工作,又能在断开与数据源连接的条件下工作。特别是后者,非常适合于网络应用的需要。因为在网络环境下,保持与数据源连接,不符合网站的要求,不仅效率低,付出的代价高,而且常常会引发多个用户同时访问带来的冲突。因此ADO.NET系统集中主要精力来解决在断开与数据源连接的条件下的数据处理问题。
ADO.NET提供了面向对象的数据库视图,并且在ADO.NET对象中封装了许多数据库属性和关系。最重要的是,ADO.NET通过多种方式封装和隐藏了很多数据库访问的细节。用户可以完全不知道对象在与ADO.NET对象交互,也不用担心数据移动到另外一个数据库或者从另一个数据库获得数据的细节问题。图1.11所示为ADO.NET架构总览。
图1.11 通过ADO.NET访问数据库的接口模型
数据集是实现ADO.NET断开式连接的核心,从数据源读取的数据先缓存到数据集中,然后被程序或控件调用。这里的数据源可以是数据库或者XML数据。
数据提供器用于建立数据源与数据集之间的联系,它能连接各种类型的数据,并能按要求将数据源中的数据提供给数据集,或者从数据集向数据源返回处理后的数据。
5.JDBC数据库接口
JDBC(Java DataBase Connectivity)是Java Soft公司开发的一组Java语言编写的用于数据库连接和操作的类和接口,可为多种RDBMS提供统一的访问方式。通过JDBC对数据库的访问包括4个主要组件:Java应用程序、JDBC驱动器管理器、驱动器和数据源。
在JDBC API中有两层接口:应用程序层和驱动程序层,前者使开发人员可以通过SQL调用数据库和取得结果,后者处理与具体数据库驱动程序相关的所有通信。
使用JDBC接口对数据库操作有如下优点:
(1)JDBC API与ODBC十分相似,有利于用户理解。
(2)使编程人员从复杂的驱动器调用命令和函数中解脱出来,而致力于应用程序功能的实现。
(3)JDBC支持不同的关系数据库,增强了程序的可移植性。
使用JDBC的主要缺点:访问数据记录的速度会受到一定影响;此外,JDBC结构中包含了不同厂家的产品,这给数据源的更改带来了较大麻烦。
6.数据库连接池技术
网络环境下的数据库应用,由于用户众多,使用传统的JDBC方式进行数据库连接,系统资源开销过大,这成为制约大型企业级应用效率的瓶颈,而采用数据库连接池技术对数据库连接进行管理,可以大大提高系统的效率和稳定性。
1.3.2 客户-服务器(C/S)模式应用系统
Microsoft公司开发的SQL Server数据库管理系统是当前最流行的数据库管理系统。数据库管理系统通过命令和适合专业人员的界面来操作数据库。
对于SQL Server 2008数据库管理系统,用户只需要在SQL Server 2008的SQL Server Management Studio管理工具中输入SQL命令,系统执行的结果就会返回到该工具上并显示出来。用户还可以直接通过该工具以界面方式操作数据库。
对于一般的数据库应用系统,除了数据库管理系统外,需要设计适合普通人员操作数据库的界面。目前,流行的开发数据库界面的工具主要包括Visual BASIC、Visual C++、Visual FoxPro、Delphi、PowerBuilder等。数据库应用程序与数据库、数据库管理系统之间的关系如图1.12所示。
图1.12 数据库应用程序与数据库、数据库管理系统之间的关系
从图中可看出,当应用程序需要处理数据库中的数据时,首先向数据库管理系统发送一个数据处理请求。数据库管理系统接收到这一请求后,对其进行分析,然后执行数据操作,并把操作结果返回给应用程序。
由于应用程序直接与用户打交道,而数据库管理系统不直接与用户打交道,所以应用程序被称为“前台”,而数据库管理系统被称为“后台”。由于应用程序向数据库管理系统提出服务请求,故通常称为客户程序(Client);而数据库管理系统为其他应用程序提供服务,故通常称为服务器程序(Server),又将这种操作数据库模式称为客户-服务器(C/S)模式。
应用程序和数据库管理系统可以运行在同一台计算机上(单机方式),也可以运行在网络方式下。在网络方式下,数据库管理系统在网络上的一台主机上运行,应用程序可以在网络上的多台主机上运行,即一对多的方式。例如,用Visual Basic开发的客户-服务器(C/S)模式的学生成绩管理系统的学生信息输入界面如图1.13所示。
图1.13 C/S模式的学生成绩管理系统界面
1.3.3 三层客户-服务器(B/S)模式应用系统
基于Web的数据库应用采用三层客户-服务器模式,也称为B/S结构。第一层为浏览器,第二层为Web服务器,第三层为数据库服务器。浏览器是用户输入数据和显示结果的交互界面。用户在浏览器表单中输入数据,然后将表单中的数据提交并发送到Web服务器。Web服务器应用程序接收并处理用户的数据,通过数据库服务器,从数据库中查询需要的数据(或把数据录入数据库)并返回给Web服务器。Web服务器再把返回的结果插入HTML页面,传送到客户端,在浏览器中显示出来。三层客户-服务器结构如图1.14所示。
图1.14 三层客户-服务器结构
例如,用ASP.NET开发的三层客户-服务器(B/S)模式的学生成绩管理系统的学生信息更新页面如图1.15所示。
图1.15 B/S模式的学生成绩管理系统页面