JSP程序设计 教学课件 ppt 范立锋 乔世权 程文彬 第07章 JSP数据库核心技术

上传人:w****i 文档编号:94456508 上传时间:2019-08-07 格式:PPT 页数:72 大小:640KB
返回 下载 相关 举报
JSP程序设计 教学课件 ppt 范立锋 乔世权 程文彬 第07章 JSP数据库核心技术_第1页
第1页 / 共72页
JSP程序设计 教学课件 ppt 范立锋 乔世权 程文彬 第07章 JSP数据库核心技术_第2页
第2页 / 共72页
JSP程序设计 教学课件 ppt 范立锋 乔世权 程文彬 第07章 JSP数据库核心技术_第3页
第3页 / 共72页
JSP程序设计 教学课件 ppt 范立锋 乔世权 程文彬 第07章 JSP数据库核心技术_第4页
第4页 / 共72页
JSP程序设计 教学课件 ppt 范立锋 乔世权 程文彬 第07章 JSP数据库核心技术_第5页
第5页 / 共72页
点击查看更多>>
资源描述

《JSP程序设计 教学课件 ppt 范立锋 乔世权 程文彬 第07章 JSP数据库核心技术》由会员分享,可在线阅读,更多相关《JSP程序设计 教学课件 ppt 范立锋 乔世权 程文彬 第07章 JSP数据库核心技术(72页珍藏版)》请在金锄头文库上搜索。

1、第7章 JSP操作数据库核心技术,7.1 JDBC技术,7.2 JDBC的结构,7.3 JDBC核心编程接口,7.4 JDBC操作数据库的步骤,7.5 JDBC对事务的操作,7.6 JDBC对数据库操作实例,7.7 数据库连接池,JDBC是一套面向对象的应用程序接口,它制定了统一的访问 各类关系数据库的标准接口,为各个数据库厂商提供了标准接口 的实现。通过使用JDBC技术,开发人员可以用纯Java语言和标准 的SQL语句编写完整的数据库应用程序,并且真正的实现了软件 的跨平台型。,7.1 JDBC技术,7.1.1 JDBC技术简介,返回,1JDBC执行步骤,JDBC的全称为“Java Data

2、Base Connectivity”,它是一组使用Java语言编写的用于连接数据库的程序接口(API)。,JDBC技术简介 (1),JDBC主要完成以下4个步骤:,(1)与数据库建立连接。 (2)向数据库发送SQL语句。 (3)处理发送的SQL语句。 (4)将处理的结果进行返回。,使用JDBC操作数据库如图所示。,2JDBC的优缺点,JDBC技术简介 (2),JDBC优点: JDBC与ODBC十分相似,便于软件开发人员的理解。 JDBC使软件开发人员从复杂的驱动程序编写工作解脱出来,可以 完全专著与业务逻辑的开发。 JDBC支持多种关系型数据库,这样可以增加软件的可移植性。 JDBC编写接口是

3、面向对象的,开发人员可以将常用的方法进行二 次封装,从而提高代码的重用性。 JDBC缺点: 通过JDBC访问数据库时,实际的操作速度会降低。 虽然JDBC编程接口是面向对象的,但通过JDBC访问数据库依然 是面向关系的。 JDBC提供了对不同厂家的产品支持,这样对数据源的操作有所影 响。,返回,7.2 JDBC的结构,7.2.1 JDBC类型,7.2.2 数据库驱动程序,返回,JDBC类型,目前比较常见的JDBC驱动程序可以分为4种,如表所示。,返回,数据库驱动程序,使用JDBC操作数据库首先必须要安装驱动程序,大多数数据库都有JDBC驱动程序,常见的驱动程序如表所示。,返回,7.3 JDBC

4、核心编程接口,7.3.1 驱动器接口:Driver,7.3.2 驱动管理类:DriverManager,7.3.3 数据库连接接口:Connection,7.3.4 执行静态SQL语句接口:Statement,7.3.5 执行预编译的SQL语句接口:PreparedStatement,7.3.6 处理存储过程语句接口:CallableStatement,7.3.7 返回查询结果集接口:ResultSet,返回,驱动器接口:Driver,任何一种数据库驱动程序都提供一个java.sql.Driver接口的驱动类,在加载某个数据库驱动程序的驱动类时,都创建自己的实例对象并向java.sql.Dri

5、verManage类注册该实例对象。数据库驱动加载在DriverManage类的执行过程如图所示。,返回,驱动管理类:DriverManager (1),负责管理JDBC驱动程序的基本服务,作用于用户和驱动程序之间,负责追踪可用的驱动程序,并在数据库和相应驱动程序之间建立连接。另外,DriverManager类也处理驱动程序登录时间限制及登录和跟踪消息的显示等事务。,1追踪有用的驱动程序,DriverManager类中一系列驱动类通过调用DriverManager类中的registerDriver()方法进行了注册。程序员将不用直接调用DriverManager类中的registerDrive

6、r()方法;而是在加载驱动程序时,由驱动程序自动调用并加载驱动类,然后自动在DriverManager类中注册。DriverManager注册的方式有以下两种:,驱动管理类:DriverManager (2),(1)通过Class静态类中的forName()方法进行调用。该方法通过Java反射技术加载驱动程序类。由于与外部设置无关,因此推荐使用这种加载驱动程序的方法。代码如下,其中“db.Driver”为数据库的驱动名称:,Class.forName(“db.Driver“);,(2)通过将数据库驱动名称添加到java.lang.System类中的jdbc.drivers属性中。该方式是一个由

7、DriverManager类加载的驱动程序类名的列表,并用冒号(:)分隔。,在上述两种方式中,新加载的驱动类都通过调用DriverManager类中的registerDriver()方法进行自动注册。出于安全方面的因素,JDBC管理层将跟踪哪个类加载器提供哪个驱动程序。这样,当DriverManager类打开连接时,它仅使用本地文件系统或与发出连接请求的代码相同的类加载器提供的驱动程序。,驱动管理类:DriverManager (3),2建立连接,加载驱动类并在DriverManager类中注册后,即可用来与数据库建立连接。当调用 DriverManager类中getConnection()方

8、法发出连接请求时,DriverManager类将检查每个驱动程序,并查看该类是否可以建立连接。例如,通过SQL Server2000数据库的驱动和URL获取数据库的连接。,Class.forName(“com.microsoft.jdbc.sqlserver.SQLServerDriver “); String url = “jdbc:microsoft:sqlserver:/localhost:1433;DatabaseName=wy_userInfo“; DriverManager.getConnection(url,“user“,“password“);,DriverManager类除了

9、getConnection()方法外,还存在其他的方法,如表所示。,返回,数据库连接接口:Connection,java.sql.Connection接口表示与特定数据库的连接,并在连接的上下文中可以执行SQL语句并返回结果。通过Connection对象可以获取一个数据库和表等数据库对象的详细信息。Connection接口中常用的方法如表所示。,返回,执行静态SQL语句接口:Statement (1),java.sql.Statement接口用来执行静态的SQL语句,并返回执行结果。处理静态的SQL语句主要分为3种Statement对象:Statement、PreparedStatement、

10、CallableStatement。它们作为在指定连接上执行SQL语句的容器。这3种Statement对象的关系如图所示。,执行静态SQL语句接口:Statement (2),1创建Statement对象,取得数据库连接对象后,就可以通过该连接发送SQL语句。Statement对象可以通过Connection对象中的createStatement()方法进行创建,例如:,Connection con = DriverManager.getConnection(url, “sa“,“); /取得数据库连接 Statement stmt = con.createStatement(); /获取St

11、atement对象,为了执行Statement对象,被发送到数据库的SQL语句将被作为参数提供给Statement类中的指定方法。例如,通过Statement对象执行查询的SQL语句:,ResultSet rs = stmt.executeQuery(“select * from wy_user“);,执行静态SQL语句接口:Statement (3),2使用Statement对象执行SQL语句,Statement接口提供了3种执行语句的方法,如表所示。,3SQL语句执行完成,当连接处于自动提交模式时,其中所执行的SQL语句在完成时将自动提交或还原。,4关闭Statement对象,Statem

12、ent对象将由Java垃圾收集程序自动关闭。,返回,执行预编译的SQL语句接口:PreparedStatement (1),PreparedStatement接口继承并扩展了Statement接口,用来执行动态的SQL语句。PreparedStatement接口包含已编译的SQL语句,并且包含于PreparedStatement对象中的 SQL语句可具有一个或多个参数。该语句为每个参数保留一个问号(?)作为占位符。每个问号的值必须在该语句执行之前,通过适当的setXXX()方法来提供。由于PreparedStatement对象已预编译过,所以其执行速度要快于Statement对象。,作为Sta

13、tement的子类,PreparedStatement除了继承Statement的所有功能外,还添加了一些方法,用于设置发送给数据库以取代参数占位符的值。同时,execute()方法、 executeQuery()方法和executeUpdate()方法已被更改,从而不再需要参数。这些方法的 Statement形式(接受SQL语句参数的形式)不应该用于PreparedStatement对象。,执行预编译的SQL语句接口:PreparedStatement (2),1创建PreparedStatement对象,例如,创建包含带两个参数占位符的SQL语句的PreparedStatement对象:,

14、PreparedStatement pstmt = con.prepareStatement(“UPDATE wy_table SET m =? WHERE x= ?“);,2传递多参数,例如,将第一个参数设为“王”,第二个参数设为“毅” :,pstmt.setString(1,“王”); pstmt.setString(2,“毅”);,PreparedStatement类常用传递参数的方法如表所示。,执行预编译的SQL语句接口:PreparedStatement (3),执行预编译的SQL语句接口:PreparedStatement (4),3执行预编译的SQL语句,设置完预编译的SQL语句

15、后,就可以通过PreparedStatemen类中的方法执行该SQL语句。PreparedStatemen类执行SQL语句的方法如表所示。,4参数中数据类型的一致性,setXXX()方法中的XXX是Java类型。它是一种隐含的JDBC类型(一般SQL语句类型),因为驱动程序将把Java类型映射为相应的JDBC类型,并将该JDBC类型发送给数据库。在编写代码时要确保将每个参数的Java类型映射为与数据库所需的JDBC数据类型兼容的JDBC类型。,返回,处理存储过程语句接口:CallableStatement (1),CallableStatement对象为所有的关系性数据库提供了一种以标准形式调

16、用已储存过程的方法。该对象可以处理两种形式的存储过程:一种形式带结果参数,另一种形式不带结果参数。结果参数是一种输出参数,是已储存过程的返回值。两种形式都可带有数量可变的输入、输出或输入和输出的参数。问号将用作参数的占位符。在JDBC中,调用存储过程的语法如下:,call 过程名(?,?,.),返回结果参数的过程的语法如下:,? = call 过程名(?, ?, .),处理存储过程语句接口:CallableStatement (2),1创建CallableStatement对象,CallableStatement cstmt = con.prepareCall(“call getTestData(?,?)“);,CallableStatement对象是用Connection类中的prepareCall()方法创建。其中,存在有两个变量,不含结果参数代码设置如下:,2输入和输出参数,将输入参数传给CallableStatement对象是通过setXXX()方法完成的。如果存储过程返回的是输出参数,则在执行Call

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号