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