《数据库的存取访问》由会员分享,可在线阅读,更多相关《数据库的存取访问(29页珍藏版)》请在金锄头文库上搜索。
1、第28章 数据库的存取访问,大部分的实际应用程序中,都需要在一定的开发环境下使用程序设计语言通过SQL语句对数据库中的数据进行存取操作。这就需要程序设计语言可以对数据库进行连接和访问。本章将从数据库应用系统结构入手,介绍数据库应用系统结构的4种基本结构,然后介绍几种常用的数据库连接访问技术,最后通过一种高级程序设计语言Java与一个数据库MySQL5.0的连接和开发的例子介绍如何使用程序设计语言实现对数据库的连接和访问。 数据库应用系统结构; 数据库连接访问技术; Java与MySQL5.0数据库连接与访问; Java与MySQL5.0数据库开发。,28.1 数据库应用系统结构,一个数据库应用
2、系统中,其系统结构一般包括界面显示层、业务逻辑层和数据处理层3个部分。其中,界面显示层主要用于为用户操作提供可视化的界面,方便用户对数据进行请求和处理;业务逻辑层主要用于处理与用户操作相关的各种业务处理,通常由程序设计语言来完成;数据处理层主要用于处理和维护各种数据信息,主要由数据库管理系统来完成。目前的数据库应用系统中主要包括集中式数据库系统、客户端/服务器端、并行式数据库系统和分布式数据库系统这4种基本的数据库应用系统结构。,28.1.1 集中式数据库系统,集中式数据库系统(Centralized DBS)是指在单机上运行的数据库管理系统。集中式数据库系统可以用于单个用户,也可以用于多个用
3、户。 在单个用户的集中式数据库系统中,界面显示层、业务逻辑层和数据处理层3个部分都在一台个人计算机上完成,这样的数据库管理系统也叫做桌面数据库管理系统。目前常用的桌面数据库管理系统包括Acess数据库和VisualFoxPro数据库。单个用户的集中式数据库系统不支持并发控制,在数据完全性、完整性和数据一致性等方面还有很多不足。,28.1.1 集中式数据库系统,在多个用户的集中式数据库系统中,有多个计算机终端通过一个数据链与主机服务器相连,可以为多个不同用户提供服务。同时在多用户的DBS中,利用操作系统提供的多任务机制处理,可以用于单机分时系统的开发环境,允许并发执行多个查询操作。,28.1.2
4、 客户端/服务器端数据库系统,客户端/服务器端数据库系统(Client/Server DBS或者C/S DBS)可以用于计算机网络环境,可以通过网络进行数据访问。其中,每一个用户的个人计算机作为客户端,主机作为服务器端,主机与客户机之间通过网络完成数据通信。,28.1.2 客户端/服务器端数据库系统,基于C/S两层结构,28.1.2 客户端/服务器端数据库系统,基于B/S结构,28.1.3 并行式数据库系统,并行式数据库系统(Parallel DBS)可以使用多个CPU和多个磁盘进行并行操作,从而提高数据处理和I/O速度。在有些应用中,数据库中数据量非常庞大,同时还要要求在极短的时间内处理大量
5、的事务,这样的环境下,集中式数据库系统、客户端/服务器端是无法胜任的。为了解决这样的问题,就出现了并行式数据库系统。 并行式数据库系统一般用于要求数据量显著提高,事务处理速度加快的场合。在并行式数据库系统中,不是采用分时的方法执行操作,而是许多操作同时进行。并行式数据库系统中的两个重要性能指标是吞吐量和响应时间。所谓吞吐量就是指给定时间间隔内可以完成多少个任务,所谓响应时间是指完成一个任务需要消耗的时间。,28.1.4 分布式数据库系统,分布式数据库系统(Distributed DBS)中数据的存储分散在不同的地方,但是这些数据在逻辑上仍然是一个整体,如同一个集中式数据库。在分布式数据库系统,
6、存储在各个不同地方的数据库系统可以通过网络通信连接在一起。 在分布式数据库系统中,数据经网络的传输时间是影响查询的主要因素,数据传输量是衡量查询时间的一个主要指标。在数据在网络中传输时,可以考虑将不参与操作的值或者无用的值不通过网络进行传输,通过这种方式可以优化分布式数据库系统中的数据查询。,28.2 数据库连接访问,在实际应用中,一般使用高级程序设计语言来完成业务逻辑的处理,使用数据库管理系统来完成数据的处理操作。高级程序设计语言要想访问数据库就必须与数据库进行连接。常用的连接访问方式包括ODBC、OLEDB、ADO、JDBC等。这一节就来介绍这几种常用的数据库连接访问方式。,28.2.1
7、ODBC,ODBC(Open Database Connectivity)开放式数据库连接是微软公司开放服务结构(WOSA,Windows Open Services Architecture)中有关数据库的一个组成部分,它提供了一组对数据库访问的标准API(应用程序编程接口)。可以通过ODBC驱动程序访问多种数据源,与数据库进行连接。ODBC 驱动程序是一些DLL,在这些DLL中提供了ODBC和数据库之间的接口。数据源是一种对数据连接的抽象,在数据源中包含了数据库位置和数据库类型等相关信息。ODBC本身也提供了对SQL语言的支持,用户可以直接将SQL语句送给ODBC。,28.2.2 OLED
8、B,OLEDB(Object Link and Embed)对象连接和嵌入是一个基于COM的数据存储对象,是一种开放式的标准,它规定了数据使用者和提供者之间的一种应用层协议。OLE DB中的对象主要包括数据源对象、阶段对象、命令对象和行组对象。 OLE DB中主要有3个对象,数据源对象、阶段对象、命令对象和行组对象。使用OLE DB的应用程序首先需要初始化OLE连接到数据源,然后发出命令并对结果进行处理,最后释放数据源对象并停止初始化OLE。,28.2.3 ADO,在.NET Framework中, 微软也提供了一个面向Internet的版本的ADO,称为ADO.NET。ADO.NET提供了平
9、台互用性和可伸缩的数据访问,支持对数据的松耦合访问,增强了对非连接编程模式的支持。ADO.NET中主要包含的对象包括SqlConnection 对象、Command对象、sqlDataReader对象、DataSet对象、SqlDataAdapter对象等。 SqlConnection 对象:用于数据库的连接,连接需要指定时数据库服务器、数据库名字、用户名、密码等信息。 Command对象:执行SQL语句并将发送SQL语句到数据库。在Command对象中包含了数据库系统的访问信息。 sqlDataReader对象:取得从command对象的SELECT语句中返回的结果,实现对数据的读取操作。,
10、28.2.3 ADO,DataSet对象:表示数据在内存中的表示形式。DataSet可以认为是一个数据容器。在DataSet中可以包括多个DataTable对象。 SqlDataAdapter对象:用于从数据库中获取数据,并将其存储在DataSet中。它也可以取得DataSet中的更新数据,并将这些数据提交给数据库。,28.2.4 JDBC,JDBCAPI中主要的类和接口包括DriverManager类、Driver接口、Connection接口、Statement接口、DatabaseMetaData接口和ResultSet接口等,这些类和接口都在java.sql包中。,28.2.4 JDB
11、C,DriverManager类:用来管理JDBC驱动程序,主要用于跟踪和加载驱动程序并负责选取数据库驱动程序和建立新的数据库连接。 Driver接口:将API的调用映射到数据库。每个驱动程序类都必须实现该接口。 Connection接口:用来将应用程序与指定的数据库连接在一起。 Statement接口:用来执行静态SQL语句,并返回执行后的结果。,28.2.4 JDBC,DatabaseMetaData接口:返回与数据库和驱动程序等底层数据库相关的信息。 ResultSet接口:提供对数据库表的访问,执行查询后返回的结果集。 JDBC驱动器类型可以有以下4种:JDBC-ODBC桥、本地API
12、驱动、网络纯Java类库驱动和本地Java类库驱动。 JDBC-ODBC桥:它是将JDBC转化为ODBC驱动,再利用ODBC对JDBC进行访问。通过使用ODBC可以实现编程语言与数据库进行交互的功能,这种驱动不是很常用。,28.2.4 JDBC,本地API驱动:可以将用户的调用转化为对数据库客户端相应API的调用。使用这种驱动需要在本地安装一些相关的代码。 网络纯Java类库驱动:驱动程序与数据库服务器相互独立,通过向一个与数据库无关的协议将数据库请求发送给中间的某个服务器,再由该服务器实现对数据库的访问。与具体的数据库无关。 本地Java类库驱动:将用户的请求转换为对数据库的协议请求,和数据
13、库服务器直接进行通信。与具体的数据库无关。,28.3 Java与MySQL5.0数据库连接与访问,Java作为目前的主流面向对象的程序设计语言之一,以其面向对象、跨平台、支持多线程和分布式等特点在Web应用程序开发、网络编程、手机游戏等各个方面都得到了广泛的应用。这一节就来介绍如何使用Java语言通过JDBC来实现对MySQL5.0数据库的访问。,28.3.1 Java开发环境,在实现Java与MySQL5.0数据库连接与访问之前,首先要安装Java开发环境。JDK(Java Development Kit)是一切Java应用程序的基础,所有的Java应用程序都是构建在这个基础之上的。它是由S
14、un公司提供的免费的软件包,该包中包括了Java程序的编写和运行所需要的工具。,28.3.2 安装Eclipse,Eclipse是一个开源的基于Java的免费的开发平台,是一个可视化的开发环境。可以到其官方网站http:/download.eclipse.org/eclipse/downloads/上下载Eclipse。Eclipse的安装非常简单,只要将下载的Eclipse压缩包解压缩到指定路径下。直接双击其中的eclipse.exe文件就可以运行Eclipse。,28.3.3 添加MySQL5.0驱动程序,为了实现Java与MySQL 5.0数据库的连接,还需要将MySQL5.0的JDBC
15、的驱动程序放到classpath指向的目录下。该驱动程序可以到MySQL的官方网站上http:/ Java与数据库的连接过程,在完成了Java开发环境的配置和MySQL 5.0数据库驱动程序的添加之后,就可以通过Java语言实现与MySQL5.0数据库的连接了。,28.3.4 Java与数据库的连接过程,(1)使用Class类加载当前数据源的驱动程序。 Class.forName(driver); 其中,driver表示数据库的驱动程序。MySQL5.0数据库驱动程序为com.mysql.jdbc.Driver (2)通过DriverManager类中的getConnection方法建立数据库
16、的连接。 conn =DriverManager.getConnection(url, userName, password); 其中,url表示数据库的URL,MySQL数据库的URL为jdbc:mysql:/HOST:PORT/database_name。HOST表示本机,PORT表示端口号,database_name表示数据库的名字。userName表示数据库使用的用户名,password表示使用该数据库的密码。,28.3.4 Java与数据库的连接过程,(3)使用Connection接口中的createStatement()方法创建Statement对象。 stmt =conn.createStatement(); 其中,stmt表示一个Statement对象,通过该对象可以执行相应的SQL语句并将其发生给数据库。 (4)执行SQL语句并将结果返回。执行的查询结果可以以ResultSet结果集的形式返回。 Resul