Java网络程序设计章-课件5.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《Java网络程序设计章-课件5.ppt》由用户(ziliao2023)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 网络程序设计 课件
- 资源描述:
-
1、第10章 数据库访问 第10章 数据库访问 10.1 数据库概述 10.2 MySQL数据库 10.3 JDBC 10.4 数据库的维护 10.5 数据库查询 10.6 数据库操作实例第10章 数据库访问 10.1 10.1 数数据据库库概概述述数据库是按照数据结构来组织、存储和管理数据的仓库,它产生于50年前。随着信息技术和市场的发展,数据管理不再仅仅是存储和管理数据,而转变成用户所需要的各种数据管理的方式。数据库有很多种类型,从最简单的存储有各种数据的表格到能够进行海量数据存储的大型数据库系统,在各个方面都得到了广泛的应用。第10章 数据库访问 10.1.1 10.1.1 数据库的功能数据
2、库的功能数据库提供了以下主要功能:实现数据共享:数据共享包含所有用户可同时存取数据库中的数据,也包括用户可以用各种方式通过接口使用数据库,并提供数据共享。减少数据的冗余度:与文件系统相比,由于数据库实现数据共享,从而避免了用户各自建立应用文件,减少了大量重复数据,减少了数据冗余,维护了数据的一致性。数据的独立性:数据的独立性包括数据库中数据库的逻辑结构和应用程序相互独立,也包括数据物理结构的变化不影响数据的逻辑结构。第10章 数据库访问 数据实现集中控制:文件管理方式中,数据处于一种分散的状态,不同的用户或同一用户在不同处理中其文件之间毫无关系。利用数据库可对数据进行集中控制和管理,并通过数据
3、模型表示各种数据的组织以及数据间的联系。数据一致性和可维护性,以确保数据的安全性和可靠性:主要包括安全性控制,以防止数据丢失、错误更新和越权使用;完整性控制,保证数据的正确性、有效性和相容性;并发控制,使在同一时间周期内,允许对数据实现多路存取,还能防止用户之间的不正常交互作用;故障的发现和恢复,由数据库管理系统提供一套方法,可及时发现故障和修复故障,从而防止数据被破坏。第10章 数据库访问 故障恢复:由数据库管理系统提供一套方法,发现故障后及时修复,从而防止数据被破坏。数据库系统能尽快恢复数据库系统运行时出现的故障,这些故障可能是物理上或是逻辑上的错误,比如对系统的误操作造成的数据错误等。第
4、10章 数据库访问 10.1.2 SQL10.1.2 SQL语句语句SQL(Structure Query Language)是用于访问和处理数据库的标准的计算机语言。SQL是一种由美国国家标准化组织(American National Standards Institute,ANSI)推荐的标准计算机语言,提供访问数据库的能力。SQL可以实现以下功能:面向数据库执行查询和取回数据;在数据库中插入新的记录;更新数据库中的数据;从数据库删除记录;第10章 数据库访问 创建新数据库;在数据库中创建新表;在数据库中创建存储过程;在数据库中创建视图;设置表、存储过程和视图的权限。数据库通常包含一个或多
5、个表,每个表由一个名字标识(例如“学生信息”或者“课程成绩”),表包含带有数据的记录(行)。例如一个名为Students的学生信息表:第10章 数据库访问 第10章 数据库访问 上面的表包含三条记录(每一条对应一个人)和五个字段(Id、姓、名、地址和城市)。在数据库上执行的大部分工作都由 SQL 语句完成。(1)通过SQL语句创建该表:create table Persons(id int auto_increment,/第一个字段,自动增长记录行序号 LastName char(20)not null,/第二字段,名 FirstName char(20)not null,/第三字段,姓 Ad
6、dress varchar(50),/第四字段,联系住址 City char(30),/第五字段,居住城市 Primary Key(id);/序号字段为主键第10章 数据库访问(2)当表建立成功后就可以添加数据。在该表中由于ID字段被设置为自动增长属性,所以只需要添加其他三个字段内容即可,通过SQL语句向该表插入数据:insert into Persons(LastName,FirstName,Address,City)values(“Adams”,“Zhang”,“Yanta Street”,“Xi An”)同时插入多条数据:insert into Persons(LastName,Firs
7、tName,Address,City)values(“Bush”,“Li”,“Centruy Avenue”,“Shang Hai”),(“Carter”,“Wang”,“Changan Street”,“BeiJing”)(3)可以通过选择语句从表中读取指定的数据,例如选取 LastName 列的数据:SELECT LastName FROM Students第10章 数据库访问 结果集类似这样:第10章 数据库访问 如果要选择FirstName=Bush:SELECT*FROM Persons where FirstName=“Bush”结果集类似这样:(4)当发现存在不合理的数据时应该删
8、除该记录,例如,删除LastName=Bush:DELETE FROM Persons WHERE LastName=Bush如果要删除所有记录,则:DELETE FROM Persons;第10章 数据库访问 10.2 MySQL10.2 MySQL数据库数据库10.2.1 MySQL 10.2.1 MySQL 在本书中采用MySQL数据库管理系统软件。MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQLAB公司,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体成本而选择了MySQL作为网站数据库。MySQL的官方网站的网址是:www.
9、MySQL.com。与其他的大型数据库例如Oracle、DB2、SQL Server等相比,MySQL有它的不足之处,如规模小、功能有限等,但是这丝毫也没有减少它受欢迎的程度。对于一般的个人使用者和中小型企业来说,MySQL提供的功能已经绰绰有余,而且由于MySQL是开放源码软件,因此可以大大降低总体拥有成本。在各大下载网站均可免费下载MySQL,其当前最新版本为MySQL 5.1.46。第10章 数据库访问 在Windows环境下安装,可选MySQL稳定版本MySQL-5.0.67-win32.zip,安装步骤简单,容易入手,如图10-1所示。图10-1 MySQL安装主界面 第10章 数据
10、库访问 图10-2 设置服务端口 但需要注意配置MySQL服务端口、支持的字体编码和管理员密码。其默认服务端口3306,可改为自定义的端口,如图10-2所示。第10章 数据库访问 其默认字体编码Latin1,需要修改为UTF-8,以便支持多国文字,如图10-3所示。图10-3 设置默认字符集 第10章 数据库访问 MySQL安装完毕后,下载数据库驱动类库MySQL-connector-java-5.1.7-bin.jar,并将其复制到Java安装路径,例如:安装路径为C:Program FilesJavajdk1.5.0_02lib。然后在JCreator编译环境中添加该数据库连接文件的存储路
11、径,如图10-4所示。第10章 数据库访问 图10-4 在JCreator中引入MySQL连接工具开发包 第10章 数据库访问 10.2.2 MySQL10.2.2 MySQL常用命令常用命令管理MySQL数据库可以通过MySQL安装目录下bin中的命令行工具MySQL和MySQLadmin来进行,也可以从MySQL的网站下载图形管理工具MySQL Administrator和MySQL Query Browser。如果使用命令行工具,常用的命令如下:显示数据库列表:show databases;刚开始时只有两个数据库:MySQL和test。MySQL库很重要,它里面有MySQL的系统信 息,
12、我们改密码和新增用户,实际上就是用这个库进行操作。第10章 数据库访问 使用某数据库:use databases_name;显示库中的数据表:show tables_name;显示数据表的结构:describe tables_name;建立数据库:create database databases_name;建立数据表:create table tables_name(字段设定列表);第10章 数据库访问 显示表中的记录:select*from tables_name;将表中记录清空:delete from tables_name;删库和删表:drop table tables_name;dr
13、op database databases_name;第10章 数据库访问 10.3 JDBC10.3 JDBC10.3.1 JDBC10.3.1 JDBC的结构的结构JDBC(Java Data Base Connectivity,Java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问接口,它由一组用Java语言编写的类和接口组成。JDBC对Java程序员而言是API,对实现与数据库连接的服务提供商而言是接口模型。作为API,JDBC为程序开发提供标准的接口,并为数据库厂商及第三方中间件厂商实现与数据库的连接提供了标准方法。JDBC使用已有的SQL
14、标准并支持与其他数据库连接标准,如ODBC之间的桥接。JDBC实现了所有这些面向标准的目标并且具有简单、严格类型定义且高性能实现的接口。JDBC的结构如图10-5所示。第10章 数据库访问 图10-5 JDBC层次结构 第10章 数据库访问 在JDBC体系结构中包含两个层次:JDBC API和JDBC驱动程序管理器API通信,向它发送各种不同的SQL语句。驱动程序管理器和各种不同的第三方驱动程序通信,完成数据库连接,返回查询信息或执行查询语句指定的操作。JDBC扩展了Java的功能。例如,用Java和JDBC API可以发布含有applet的网页,而该applet使用的信息可能来自远程数据库。
15、企业也可以用 JDBC 通过Intranet 将所有职员信息存储到一个或多个内部数据库中。随着越来越多的程序员开始使用Java编程语言,对从Java中便捷地访问数据库的要求也在日益增加。第10章 数据库访问 10.3.2 JDBC10.3.2 JDBC的驱动程序的驱动程序目前比较常见的JDBC驱动程序可分为以下四个种类:(1)JDBC-ODBC桥加ODBC驱动程序。JavaSoft桥产品利用ODBC驱动程序提供JDBC访问。注意,必须将ODBC二进制代码加载到使用该驱动程序的每个客户机上。因此,这种类型的驱动程序最适合于企业网,或者是用Java编写的三层结构的应用程序服务器代码。(2)本地AP
16、I。这种类型的驱动程序把客户机API上的JDBC调用转换为Oracle、Sybase、Informix、DB2或其他DBMS的调用。注意,像桥驱动程序一样,这种类型的驱动程序要求将某些二进制代码加载到每台客户机上。第10章 数据库访问(3)JDBC网络纯Java驱动程序。这种驱动程序将JDBC转换为与DBMS无关的网络协议,之后这种协议又被某个服务器转换为一种DBMS协议。这种网络服务器中间件能够将它的纯Java客户机连接到多种不同的数据库上。所用的具体协议取决于提供者,所以,这是最为灵活的JDBC 驱动程序。(4)本地协议纯Java驱动程序。这种类型的驱动程序将JDBC调用直接转换为DBMS
17、所使用的网络协议。这将允许从客户机上直接调用DBMS服务器,是Intranet访问的一个很实用的解决方法。第10章 数据库访问 10.3.3 10.3.3 数据库编程的基本步骤数据库编程的基本步骤在JDBC中访问数据库的基本步骤:首先加载数据库驱动程序,其次建立数据库连接,接下来执行SQL语句访问数据库,然后处理结果集,最后关闭结果集,并断开连接。所以,JDBC由一系列连接(Connection)、SQL语句声明(Statement)和结果集(ResultSet)构成,如图10-6所示。第10章 数据库访问 图10-6 JDBC结构 第10章 数据库访问 1.JDBC URL1.JDBC UR
18、L在加载数据库驱动程序时需要对网络上的数据库进行定位。JDBC URL提供了一种标识数据库的方法,可以使相应的驱动程序能识别该数据库并与之建立连接。其作用是提供某些约定,驱动程序编程员在构造他们的JDBC URL时应该遵循这些约定。由于JDBC URL要与各种不同的驱动程序一起使用,因此这些约定应非常灵活。首先,它们应允许不同的驱动程序使用不同的方案来命名数据库。例如,odbc子协议允许(但并不是要求)URL含有属性值。第10章 数据库访问 其次,JDBC URL应允许驱动程序编程员将一切所需的信息编入其中。这样就可以让要与给定数据库对话的applet打开数据库连接,而无须要求用户去做任何系统
19、管理工作。最后,JDBC URL应允许某种程度的间接性。也就是说,JDBC URL可指向逻辑主机或数据库名,而这种逻辑主机或数据库名将由网络命名系统动态地转换为实际的名称。JDBC URL的标准语法如下:JDBC:它由三部分组成,各部分间用冒号分隔。JDBC URL的三个部分可分解如下:JDBC协议:JDBC URL中的协议总是JDBC。第10章 数据库访问 :驱动程序名或数据库连接机制(这种机制可由一个或多个驱动程序支持)的名称。子协议名的典型示例是“odbc”,该名称是为用于指定ODBC风格的数据资源名称的URL专门保留的。例如,为了通过JDBC-ODBC桥来访问某个数据库,可以用如下所示
20、的URL:JDBC:odbc:book。本例中,子协议为“odbc”,子名称“book”是本地ODBC数据资源。如果要用网络命名服务(这样JDBC URL中的数据库名称不必是实际名称),则命名服务作为子协议,例如,URL:JDBC:dcenaming:accounts。第10章 数据库访问 :一种标识数据库的方法。子名称可以依不同的子协议而变化。它还可以有子名称的子名称(含有驱动程序编程员所选的任何内部语法)。使用子名称的目的是为定位数据库提供足够的信息。若数据库是通过Internet来访问的,则必须遵循如下的标准URL命名约定:/主机名:端口/子协议。假设“dbnet”是个用于将某个主机连接
21、到Internet上的协议,则JDBC URL应为:JDBC:dbnet:/wombat:356/fred。第10章 数据库访问 2.DriverManager2.DriverManager类类当明确了数据库的URL后,用户还需要安装与指定数据库相应的驱动程序。在Java语言中,DriverManager类负责加载和注册JDBC驱动程序,管理应用程序和已注册的驱动程序的连接。加载和注册驱动程序使用Class类的forName方法,装载驱动程序只需要非常简单的一行代码。例如,若要使用 JDBC-ODBC 桥驱动程序,可以用下列代码装载它:Class.forName(“sun.JDBC.odbc.
22、JdbcOdbcDriver”);驱动程序文档将提示应该使用的类名。例如,如果类名是 JDBC.DriverXYZ,那么将用以下代码装载驱动程序:Class.forName(JDBC.DriverXYZ);第10章 数据库访问 不需要创建一个驱动程序类的实例并且用 DriverManager 登记它,因为调用Class.forName 将自动加载驱动程序类。如果你曾自己创建实例,你将创建一个不必要的副本,但它不会带来什么坏处。加载 Driver 类后,它们即可用来与数据库建立连接。第10章 数据库访问 3.Connection3.Connection接口接口Connection接口负责维护Ja
23、va应用程序与数据库之间的连接。用适当的驱动程序类与 DBMS建立一个连接。下列代码是一般的做法:Connection con=DriverManager.getConnection(url,“user”,“Password”);在这里url是关键。如果你正在使用 JDBC-ODBC 桥,JDBC URL 将以 JDBC:odbc 开始,余下URL通常是你的数据源名或数据库系统名。因此,假设你正在使用ODBC存取一个叫“Fred”的ODBC数据源,你的JDBC URL是JDBC:odbc:Fred。把“user”及“Password”替换为你登录DBMS的用户名及口令。如果你登录数据库系统的用
24、户名为“Fernanda”,口令为“J8”,只需下面的2行代码就可以建立一个连接:第10章 数据库访问 String url=“JDBC:odbc:Fred”;Connection con=DriverManager.getConnection(url,“Fernanda”,“J8”);如果你使用了第三方JDBC驱动程序,程序文档将告诉你该使用什么子协议,就是在 JDBC URL中放在JDBC后面的部分。例如,如果驱动程序开发者注册了acme作为子协议,JDBC URL的第一和第二部分将是 JDBC:acme。JDBC URL最后一部分提供了定位数据库的信息。如果装载的驱动程序识别了提供给Dr
25、iverManager.getConnection的JDBC URL,那么驱动程序将根据JDBC URL建立一个到指定DBMS的连接。DriverManager 类在后台为你管理建立连接的所有细节。程序员在此类中直接使用唯一方法DriverManager.get Connection()。该方法返回一个打开的连接,你可以使用此连接创建JDBC statements并发送SQL语句到数据库。在前面的例子里,con对象是一个打开的连接,并且我们要在以后的例子里使用它。第10章 数据库访问 所以,JDBC连接数据库的准备工作分三个步骤,分别是:(1)加载驱动程序。Class.forName(“sun
展开阅读全文