《JSP动态网站开发实践教程ch6.pptx》由会员分享,可在线阅读,更多相关《JSP动态网站开发实践教程ch6.pptx(27页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、窗内网,免费看视频,轻松学编程 第第6 6章章 JSP JSP访问数据库访问数据库窗内网,免费看视频,轻松学编程 内容摘要 JDBC技术是Web程序开发的重要组成部分。在网络技术蓬勃发展的时代,数据库扮演着非常重要的角色;因此,数据库操作是程序应用的最重要技术之一。如何获取数据、增加数据、删除数据以及如何对数据库进行管理,是每个程序开发者必须面对的问题。为了使程序开发人员不必考虑所用的数据库更方便开发应用程序,Java平台提供了一个标准的数据库访问接口集JDBC API。本章主要介绍JDBC的基本概念和相关接口,如何使用JDBC提供的接口操作数据库,使用预编译语句等。窗内网,免费看视频,轻松学
2、编程 学习目标掌握JDBC的概念掌握JDBC API常用的接口和方法熟练掌握使用不同方式连接数据库熟练掌握数据库的更新操作熟练掌握数据库的显示和查询操作熟练掌握数据库分页显示掌握预编译语句的处理掌握获取数据库系统信息窗内网,免费看视频,轻松学编程 6.1 JDBC概述概述 在JSP技术中,对数据库的操作都是通过JDBC组件完成的。JDBC在Java脚本程序和数据库之间充当了一个桥梁的作用。Java脚本程序可以通过JDBC组件向数据库发出命令,数据库管理系统获得命令后,执行请求,并将请求结果通过JDBC返回给Java程序。JDBC是Sun公司提供的一套数据库编程接口API函数,由Java语言编写
3、的类。使用JDBC开发的程序能够自动地将SQL语句传送给相应的数据库管理系统。不但如此,使用Java编写的应用程序可以在任何支持Java的平台上运行,不必在不同的平台上编写不同的应用。Java和JDBC的结合可以让开发人员在开发数据库应用程序时真正实现“Write Once,Run Everywhere!”。窗内网,免费看视频,轻松学编程 6.1 JDBC概述概述 通过JDBC组件,向各种关系数据库发送SQL语句就是一件很容易的事。换言之,有了JDBC API,就不必为访问Sybase数据库专门写一个程序,为访问Oracle数据库又专门写一个程序,为访问Informix数据库又写另一个程序等。
4、只须用JDBC API写一个程序就够了,它可以向相应数据库发送SQL语句。而且,使用Java编程语言编写的应用程序,无须考虑要为不同的平台编写不同的应用程序。将Java和JDBC结合起来将使程序员只须写一遍程序就可让它在任何平台上运行。JDBC在Java程序中所起的作用如图6-1所示:窗内网,免费看视频,轻松学编程 6.1 JDBC概述概述图6-1 应用程序、JDBC和驱动程序之间的关系窗内网,免费看视频,轻松学编程 6.2 JDBC API介绍介绍 通过JDBC组件对数据库进行操作所需的类库JDBC API,包含在两个包里。第一个包是java.sql,包含了JDBC API的核心Java数据
5、对象,包括为DBMS(数据库管理系统)连接和存储在DBMS里的数据进行交互而提供的Java数据对象。另外一个包含JDBC API的包是javax.sql,它扩展了java.sql,是J2EE/Java EE的一部分。除其他高级JDBC特性外,javax.sql还包含了那些与Java命名与目录接口(JNDI)进行交互的Java数据对象,以及管理连接池的Java数据对象。窗内网,免费看视频,轻松学编程 6.2 JDBC API介绍介绍 在java.sql包中,只包括少量具体类。API中的大部分被描述为数据库的中枢接口类,它们指定具体操作而不提供任何实现。实际的实现由第三方提供商提供。独立的数据库系
6、统通过一个实现java.sql.Driver接口的特定JDBC驱动程序被接收。驱动程序支持几乎所有流行的RDBMS(关系数据库管理)系统,但不是都可以免费获得。Sun公司将一个免费的JDBC-ODBC桥驱动程序绑定在JDK上以支持标准ODBC数据源。例如Microsoft Access数据库。但是,Sun公司不建议在其他设备上使用该桥驱动程序。窗内网,免费看视频,轻松学编程 6.2 JDBC API介绍介绍 JDBC API应用程序结构图如图6-2所示:图6-2 JDBC API结构图窗内网,免费看视频,轻松学编程 6.2 JDBC API介绍介绍u DriverManager DriverM
7、anager类是JDBC的管理层,作用于用户和驱动程序之间。跟踪可用的驱动程序,并在数据库和相应驱动程序之间建立连接。另外,DriverManager类也处理诸如驱动程序登录时间限制及登录和跟踪消息的显示等事务。u Connection Connection对象代表与数据库的连接。连接过程包括所执行的SQL语句和在该连接上所返回的结果。一个应用程序可与单个数据库有一个或多个连接,或者可与许多数据库有连接。窗内网,免费看视频,轻松学编程 6.2 JDBC API介绍介绍u Statement Statement对象用于将SQL语句发送到数据库中。实际上有三种Statement对象,它们都作为在给
8、定连接上执行SQL语句的包容器:Statement、PreparedStatement(它从Statement继承而来)和CallableStatement(它从PreparedStatement 继承而来)。它们都专用于发送特定类型的SQL语句:Statement对象用于执行不带参数的简单SQL语句;PreparedStatement对象用于执行带或不带IN参数的预编译SQL语句;CallableStatement对象用于执行对数据库已存储过程的调用。Statement接口提供了执行语句和获取结果的基本方法。PreparedStatement接口添加处理IN参数的方法;而CallableSt
9、atement添加处理OUT参数的方法。窗内网,免费看视频,轻松学编程 6.2 JDBC API介绍介绍u ResultSet 使用Statement对象执行executeQuery()方法,将会返回一个数据库的结果集。结果集一般是一个表,其中有查询所返回的列标题及相应的值。ResultSet记录集中包含符合SQL语句中条件的所有行,并且它通过一套get方法(这些get方法可以访问当前行中的不同列)提供对这些行中数据的访问。ResultSet使用next方法用于移动到ResultSet中的下一行,使下一行成为当前行。窗内网,免费看视频,轻松学编程 6.3 连接数据库的常用方式连接数据库的常用方
10、式 通常一个数据库厂商在推出自己的数据库产品时,都会提供一套访问数据库的API,这些API可能以各种语言的形式提供,客户端程序通过调用这此专有的API来访问数据库。每一个厂商提供的数据库访问API都不相同,导致了使用某一个特定数据库的程序不能移植到另一个数据库上。JDBC是Java应用程序和数据库之间的中间组件,应用程序通过JDBC组件可以将操作“翻译”给数据库。客户端只需要调用JDBC API,而具体由JDBC的实现层(JDBC驱动程序)去处理与数据库的通信,从而让应用程序不再受限于具体的数据库产品。JDBC驱动程序可用于大多数数据平台,它们来自许多提供商并且区别很大。下面介绍两种常见的连接
11、方式。窗内网,免费看视频,轻松学编程 6.3.1 使用纯使用纯JAVA数据库驱动程序连接数据库驱动程序连接 这种驱动利用作为中间件的应用服务器来访问数据库。应用服务器作为一个到多个数据库的网关,客户端通过它可以连接到不同的数据库服务器。应用服务器通常都有自己的网络协议,Java客户端程序通过JDBC驱动程序将JDBC调用发送给应用服务器,应用服务器使用本地驱动程序访问数据库,从而完成请求。如图6-3所示。窗内网,免费看视频,轻松学编程 6.3.1 使用纯使用纯JAVA数据库驱动程序连接数据库驱动程序连接图6-3 利用作为中间件的应用服务器访问数据库窗内网,免费看视频,轻松学编程 6.3.2 使
12、用使用JDBC-ODBC桥接器连接桥接器连接 因为微软公司推出的ODBC比JDBC出现的时间要早,所以绝大多数的数据库都可以通过ODBC来访问,当Sun公司推出JDBC的时候,为了支持更多的数据库提供了JDBC-ODBC桥。JDBC-ODBC桥本身也是一个驱动,利用这个驱动,可以使用JDBC API通过ODBC去访问数据库。这种桥机制实际上是把标准的JDBC调用转换成相应的ODBC调用,并通过ODBC库把它们发送给支持ODBC对象的数据库,如图6-5所示。窗内网,免费看视频,轻松学编程 6.3.2 使用使用JDBC-ODBC桥接器连接桥接器连接图6-5 通过JDBC-ODBC桥访问数据库窗内网
13、,免费看视频,轻松学编程 6.3.2 使用使用JDBC-ODBC桥接器连接桥接器连接 从图6-5所示可以看到通过JDBC-ODBC桥的方式访问数据库,需要经过多层的调用,因此利用JDBC-ODBC桥访问数据库的效率比较低。不过在数据库没有提供JDBC驱动,只有ODBC驱动的情况下,也只能利用JDBC-ODBC桥的方式访问数据库,例如,要访问Microsoft Access数据库,就只能利用JDBC-ODBC桥来访问。利用JDBC-ODBC访问数据库,需要客户的机器具有JDBC-ODBC桥驱动。ODBC驱动程序和相应数据库的本地API。在JDK中,提供JDBC-ODBC桥的实现类(sun.jdb
14、c.odbc.JdbcOdbcDriver类)。窗内网,免费看视频,轻松学编程 6.4 更新、添加与删除操作更新、添加与删除操作 更新数据库中的数据,可以使用SQL语句的UPDATE、INSERT和DELETE操作,然后将包含UPDATE、INSERT、DELETE的SQL语句交给Statement对象的executeUpdate()方法执行。Statement对象用于执行不带参数的简单SQL语句。在JSP程序中,由于外部环境的变化,后台连接数据库中的数据每隔一段时间,就需要更新。我们不可能直接打开MySQL数据库进行更新,一般情况下都是借助JSP程序进行更新。窗内网,免费看视频,轻松学编程
15、6.5 记录显示和查询操作记录显示和查询操作 显示和查询数据库的操作,与执行更新的操作基本相似。不同的是使用的SQL语句不同,并且操作完成后往往需要对查询的结果集进行处理。在本节中,将介绍如何显示和查询数据库记录。窗内网,免费看视频,轻松学编程 6.5.1 数据显示数据显示 在上一个小节中,可以成功执行添加、删除和修改数据库数据。当数据库连接成功后,就可以显示数据库中的数据。ResultSet接口常用的方法在6.2节中已经做了简单介绍,这里就不再重复。窗内网,免费看视频,轻松学编程 6.5.2 模糊查询模糊查询 在线查询数据库中记录信息,并将信息显示在当前页面的操作实际上和前面的数据显示操作基
16、本一样,只不过是SQL语句不同罢了。窗内网,免费看视频,轻松学编程 6.6 分页显示记录分页显示记录 通过Web进行查询时,有时候由于得到的结果集太大,如果一次性全部通过网络传输过来,不仅浪费网络资源,还会导致客户端的响应时间很长,因此有必要把得到的结果集分页传递给客户端。数据库分页显示信息是Web应用程序中经常遇到的问题,当用户的数据查询结果太多而超过计算机屏幕显示的范围时,为了方便用户的访问,往往采用数据库分页显示的方式。对于Web编程的老手来说,编写这种代码实在是和呼吸一样自然,但是对于初学者来说,常常对这个问题摸不着头绪,因此需要对分页显示的原理和实现方法进行介绍。所谓分页显示,也就是
17、将数据库中的结果集人为的分成一段一段的来显示,这里需要两个初始的参数:l 每页多少条记录($PageSize)l 当前是第几页($CurrentPageID)窗内网,免费看视频,轻松学编程 6.7 使用预处理语句使用预处理语句 许多成熟的数据库都支持预处理语句(Prepared Statements)的概念。它们是什么东西?我们可以把它们想成是一种编译过的要执行的SQL语句模板,可以使用不同的变量参数定制它。窗内网,免费看视频,轻松学编程 6.7.1 预处理语句的优点预处理语句的优点 预处理语句具有两个主要的优点:l 查询只需要被解析(或准备)一次,但可以使用相同或不同的参数执行多次。l 传给
18、预处理语句的参数不需要使用引号,底层驱动会处理这个。窗内网,免费看视频,轻松学编程 6.7.1 预处理语句的优点预处理语句的优点 在JDBC组件中,PreparedStatement接口创建表示预编译的SQL语句的对象。SQL语句经过预编译,并存储在PreparedStatement对象中。然后,此对象可用来有效地多次执行此语句。PreparedStatement接口继承Statement类,并与之在两方面有所不同:l PreparedStatement实例包含已编译的SQL语句。由于PreparedStatement对象已预编译过,所以其执行速度要快于Statement对象。因此,多次执行的
19、SQL语句经常创建为PreparedStatement对象,以提高效率。l 包含于PreparedStatement对象中的SQL语句可具有一个或多个IN参参。IN参数的值在SQL语句创建时未被指定。相反的,该语句为每个IN参数保留一个问号(“?”)作为占位符。每个问号的值必须在该语句执行之前,通过适当的SetXXX方法来提供。窗内网,免费看视频,轻松学编程 6.7.1 预处理语句的优点预处理语句的优点 作为Statement的子类,PreparedStatement继承了Statement的所有功能。另外它还添加了一整套方法,用于设置发送给数据库以取代IN参数占位符的值。同时,三种方法execute、executeQuery和executeUpdate已被更改又以使其不再需要参数。这些方法的Statement形式(接受SQL语句参数的形式)不应该用于PreparedStatement对象。