欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    JSP中用JDBC访问数据库.ppt

    • 资源ID:6510403       资源大小:2.77MB        全文页数:45页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    JSP中用JDBC访问数据库.ppt

    学习内容:了解JDBC数据库访问技术和JDBC的常用接口掌握JDBC数据库驱动程序的获取和安装掌握使用JDBC访问数据库的方法掌握JSP、Servlet、JavaBean中数据库的连接和操作理解连接池和数据源的概念掌握连接池典型编程方法,第7单元 用JDBC访问数据库,JDBC概述,用JDBC访问数据库,DAO与数据库连接池,什么是JDBC,JDBC是Java数据库连接(Java DataBase Connectivity)技术的简称,由一组用Java语言编写的类和接口组成。JDBC是一组独立于特定数据库管理系统的、通用的SQL数据库存取和操作的公共接口(在java.sql和javax.sql包中)。JDBCTM本身是个商标名而不是一个缩写字;JDBC由JavaSoft公司(Sun公司负责开发Java产品的业务单位)同数据库及数据库工具厂家一起建立的独立于DBMS的机制;JDBC为工具/数据库开发人员提供了一个标准的API,使他们能够用纯Java API来编写数据库应用程序。JDBC的设计目标:JDBC是一种规范,最主要的设计目的是让各个数据库开发商为Java程序员提供标准的数据库访问的类和接口;不必在不同的系统平台下编写不同的数据库应用程序。对不同DBMS管理的数据进行一致的操作,而不必关心其存储格式;可以使用Java语言来编写完整的数据库方面的应用程序。,JDBC的优缺点,JDBC的优点:可移植性强:JDBC支持多种关系型数据库,只需用JDBC API编写一个程序即可访问不同的数据库;JDBC使程序员不关注驱动程序的编写,完全专著业务逻辑的开发。可以用JDBC-ODBC桥驱动器将JDBC函数调用转换为ODBC;JDBC接口是面向对象的,开发人员可以将常用的方法进行二次封装,从而提高代码的重用性。JDBC缺点:通过JDBC访问数据库时,实际的操作速度会降低。虽然JDBC编程接口是面向对象的,但通过JDBC访问数据库仍然是面向关系的。JDBC提供了对不同厂家的数据库产品的支持,这样对数据源的操作有所影响。与ODBC相比,JDBC没有定制的数据源的概念,而是直接在应用程序中加载驱动程序并连接特定的数据库。,ODBC体系结构,ODBC(开放数据库互连):微软为实现异构数据库互连而推出的一种标准,它是一个单一的、公共的编程接口。ODBC的体系结构含有四个部件:应用程序Application:执行ODBC函数调用和处理,提交SQL语句并检索结果。驱动程序管理器Driver Manager:为应用程序装载驱动程序。,驱动程序Driver接口:实现ODBC函数调用和同数据源交互作用的动态连接库,执行ODBC函数调用提交SQL请求到指定的数据源,并把结果返回给应用程序。需要时,驱动程序也可改变应用程序请求,以和特定DBMS的语法匹配。数据源Data Source:由需要交互的数据和与之相连的OS、DBMS及存取DBMS的网络平台组成。,JDBC体系结构,JDBC接口(API)也包括两个层次(与ODBC相类似):面向应用的API(Java API抽象接口):供应用程序开发人员使用包括:连接数据库、执行SQL语句、获得结果面向数据库的API(java Driver API):供数据库厂商实现相应的数据库驱动程序(驱动程序是实现了接口的类)。,加载某个数据库驱动程序类时,将创建相应的实例并向类注册该对象。其执行过程如下:,JDBC驱动程序的类型,JavaSoft定义了四种JDBC驱动程序的基本类型。建议使用:JDBC-ODBC桥驱动程序,数据库协议驱动程序;不建议使用:网络协议驱动程序,本地Java驱动程序。,数据库协议驱动程序:驱动程序用于与数据库客户端API进行通信(代替JDBC-ODBC桥)性能会比桥略好,是一种低成本数据库解决方案,许多厂商将该类驱动程序捆绑在其产品中。,JDBC-ODBC桥驱动程序:将JDBC翻译成ODBC后,再用ODBC驱动程序与数据库通信。仅用于:有ODBC驱动程序但没有提供JDBC驱动程序的数据库系统;或已使用ODBC的低成本数据库解决方案。,纯Java类库的驱动程序,网络协议驱动程序:将JDBC命令转换为与数据库系统无关的网络协议,并发送给一个中间件服务器。中间件服务器再将该网络协议,转换为特定数据库系统的协议,并发送给数据库系统。从数据库系统获得的结果,先发送给中间件服务器,并进而返回给应用程序。,本地Java驱动程序:纯Java的驱动程序,直接与特定的数据库系统通信;即驱动程序将JDBC请求直接翻译成特定DBMS协议。优点:没有中间的转换或者是中间件。通常用于提高数据库访问的性能。,JDBC的主要功能,JDBC API多集中在java.sql包中,按功能可分为6类:管理连接数据源:DriverManager,Driver,Connection发送SQL语句:Statement,PreparedSatement,CallableStatement获取查询的结果集:ResultSet用于匹配SQL数据类型与Java数据类型用于获取数据库元数据:DatabaseMetaData提供了异常处理功能:SQLException,JDBC的主要使用步骤,使用JDBC技术的主要步骤为:1)注册或加载JDBC驱动程序;2)建立与数据库的连接;3)发送SQL语句;4)处理返回结果;5)关闭相关连接。,与上述操作相关的类或接口::用来装载驱动程序,并且为创建新的数据库联接提供支持。:完成对某一指定数据库的联接:在一个给定的连接中作为SQL执行声明的容器,他包含了两个重要的子类型。:用于执行预编译的sql声明:用于执行数据库中存储过程的调用:对于给定声明取得结果的途径,注册和加载驱动器,1.加载连接数据库的驱动程序类任何一种数据库驱动程序都要提供一个实现接口的驱动类,在加载数据库驱动类时,创建相应的实例对象并向类注册该实例对象。将JDBC加到Build Path:,为程序加载驱动器类:一般用Class.forName()方法显式地加载一个驱动程序类,由驱动程序负责向DriverManager注册;新加载的驱动类都通过调用DriverManager类中的registerDriver()方法进行自动注册。,获取与数据库的连接,2.创建与数据源的连接:数据源的URL:jdbc:database locator其中:jdbc要使用JDBC;Subprotocal驱动程序类型database locator:网络数据库的主机名、端口和数据库名等,获取数据库连接的元数据,通过接口可获得数据库的整体综合信息,典型数据库驱动程序,使用JDBC-ODBC桥连接数据库,创建ODBC连接:打开ODBC数据源管理器,增加新的数据源。,编写程序,小结,JDBC是一个独立于特定数据库管理系统的、通用的SQL数据库存取和操作的公共接口;JDBC定义了用于访问数据库的标准Java类库,使用这个类库可以以一种标准的方法、方便地访问数据库资源,象ODBC一样,JDBC对开发者屏蔽了一些细节问题。JDBC使应用程序开发人员使用JDBC可以连接任何提供了JDBC驱动程序的数据库系统,这样就使得程序员无需对特定的数据库系统的特点有过多的了解,从而大大简化和加快了开发过程。,用JDBC访问数据库,访问数据库的数据,访问数据库中的数据分为三种方式:Statement:执行无参数的静态SQL语句PreparedStatement:执行带或不带IN参数的预编译SQL语句;CallableStatement:执行存储过程调用。,接口StatementStatement接口常用的执行SQL语句的方法:,接口Statement使用示例,Statement应用要点,Statement应用要点JDBC编译时并不对将要执行的SQL查询语句作任何检查,仅将其作为一个String对象,直到驱动程序执行SQL查询语句时才检查否正确;若出现错误,执行时将会产生 SQLException;一个Statement对象在同一时间只能打开一个结果集,对第二个结果集的打开隐含关闭第一个结果集;若想对多个结果集同时操作,必须创建多个Statement对象,在每个Statement对象上执行SQL查询语句以获得相应的结果集;若不需要同时处理多个结果集,则可以在一个Statement对象上顺序执行多个SQL查询语句,对获得的结果集进行顺序操作;注意:必须将JDBC驱动程序包加到项目classpath中。在使用Statement时,可能引发SQL注入的问题。,使用Statement要注意引发SQL注入,预编译PreparedStatement对象,用PreparedStatement对象可多次执行一个SQL语句PreparedStatement对象通过传递不同参数值多次执行同一SQL 语句,可得到多个不同的结果。PreparedStatement的实现机制:使用PreparedStatement对象执行Sql命令时,Sql被DBMS进行解析和编译,然后放到命令缓冲区;每当执行同一个PreparedStatement对象时,就被再解析一次,但不被再次编译。在大量用户的企业级应用中,使用PreparedStatement对象带来的编译次数的减少能够提高数据库的总体性能。executeUpdate(String sql):能执行添加(insert)、修改(update)和删除(delete)的SQL语句,执行成功将返回所影响记录的行数。executeQuery(String sql):将执行查询(select)语句,成功后,返回一个存储所有满足查询条件的数据库记录的ResultSet对象。在该对象的sql语句中可用?作为参数的占位符;执行前,必须为每个问号?设置参数值。通过setXxx()方法可设置参数,其中Xxx是与参数对应的类型。,预编译PreparedStatement使用示例,结果集ResultSet对象,Statemn接口的executeQuery()方法,返回一个ResultSet类型的结果集,其中为所有满足查询条件的数据库记录。ResultSet的基本处理方法:ResultSet对象中不仅包含满足查询条件的记录,还可以获得数据表的相关信息,如每列的名称、列的数量等。ResultSet对象维持一个指向当前行的指针。最初,指针指向第一行之前,ResultSet对象的next()方法使指针移向下一行。第一次,使用next()方法时将指针指向结果集的第一行;next方法返回是一个boolean值,若为true,则成功移向下一行;若返回false则没有下一行。getXxx法可以从某一列中获得结果;其中:Xxx是java数据类型;获取结果集中的数据可用两种方法获得:通过列名来获取某个字段的数据。通过列的索引(从1开始)获取某个字段的数据。,ResultSet示例方法演示,ResultSet示例多结果集演示,数据类型和转换,数据类型一般转换规则:对于getXXX()方法,JDBC驱动程序试图将基本数据转换成指定Java类型,然后返回适合的Java值。例如:如果为getString()方法,而数据库中数据类型为VARCHAR,则JDBC驱动程序将把VARCHAR转换成Java String。GetString()的返回值将为Java String 对象。再如:除getBytes()和getBinaryStream()外的任何getXXX()都可用于获取LONGVARCHAR值,但推荐按返回的类型使用getAsciiStream()或 getUnicodeStream()方法。方法getObject()将任何数据类型返回为Java Object。对非常大的值使用流:对很大的字符数据(longvarchar)或二进制数据(longvarbinary)可通过输入让ResultSet类返回来完成。getBinaryStream():返回对字段不进行任何转换的字节而流。getAsciiStream():返回字段的单字节ASCII字符的流。getUnicodeStream():返回字段的双字节Unicode字符流。,数据库存储过程调用,用CallableStatement对象能以标准形式调用存储过程:所有的关系数据库都可以用该接口的对象以标准形式调用储存过程;该对象调用存储过程有两种形式:不带结果参数的形式:call 过程名(?,?,.)带结果参数的形式:?=call 过程名(?,?,.)其中:结果参数是一种输出参数,是储存过程的返回值。两种形式都可带多个输入、输出参数,问号用作参数的占位符处理存储过程接口的使用步骤:用Connection类的prepareCall()创建CallableStatement对象。如:CallableStatement cst=con.prepareCall(call proDemo(?);设置输入参数:通过setXXX()方法给CallableStatement设置注册输出参数:执行该对象前必须注册各输出参数的JDBC类型注册JDBC 类型用registerOutParameter()方法完成。语句执行完后,CallableStatement的getXXX()方法将取回参数值。其中存储过程的返回值也作为输出参数。,存储过程调用示例,为数据库建立存储过程如下:,调用数据库存储过程:,事务处理,事务:一组组织在一起的数据库操作序列(多个SQL语句)同一事务中的操作要么全做,要么全不做,才能保证数据库的一致性和完整性,因此是个不可分割的工作单位。数据库事务的ACID特性:原子性(atomicity):指事务执行单元是一个不可分割的单元,这些单元要么都执行,要么都不执行。一致性(consistency):指无论执行了什么操作,都应保证数据的完整性和业务逻辑的一致性。隔离性(isolation)或称为事务的串行化:指事务执行过程中不存在当前所处理数据正被另一事务处理的情况。持久性(durability):指事务结束后,执行单元操纵的数据被保存在数据库中,这些数据的保存状态是永久性的,即使数据库系统崩溃,数据也不会消失。默认情况下,JDBC的新连接处于自动提交模式。,JDBC中的事务处理,JDBC中的事务处理有两种方式:自动提交:每当执行完一条SQL时就会提交事务;手动提交:必须用Connection接口的commit()方法才提交,或用rollback()回滚事务,以使当前事务结束,另一事务随即开始。用Connection的setAutoCommit()可设置事务提交方式void setAutoCommit(booleanautoCommit)参数:为true启用自动提交模式;为false禁用自动提交模式void commit():提交事务使所有上一次提交/回滚后进行的更改持久化,并释放此Connection 对象当前持有的所有数据库锁。此方法只应该在已禁用自动提交模式时使用。void rollback():回滚事务取消在当前事务中进行的所有更改,并释放此Connection对象当前持有的所有数据库锁。此方法只应该在已禁用自动提交模式时使用。,事务处理示例自动提交,事务处理示例手动提交,JDBC对事务管理级别,JDBC的事务隔离级别:Connection对象的setTransactionLevel()方法可指定事务级别。,低隔离级别:可增强多用户同时访问数据的能力,但增加了用户可能遇到的并发副作用(如脏读或丢失更新)的数量。高隔离级别:能减少用户遇到并发副作用的类型,但需更多的系统资源,并增加了一个事务阻塞其他事务的可能性。,小结:,三种执行SQL语句的方法executeQuery()返回执行后的单个结果集,所以通常用于SELECT语句。executeUpdate()返回一个整数,指示受影响的行数(即更新计数)。execute()返回一个boolean值,该方法执行后可以得到多个结果集、多个更新计数或二者的组合。,DAO和数据库连接池,为什么需要DAO模式,多层结构系统的主要特点:安全性:中间层隔离了客户对数据库服务器的访问,保护了数据库的安全。易维护性:由于业务逻辑位于单独的一层,当业务规则发生变化后,客户端程序基本不作改动。快速响应:通过负载均衡及中间层缓冲数据,可提高对客户端的响应速度。系统扩展灵活:基于多层分布式式结构,当业务增大时,可在中间层部署更多的应用服务器,提高对客户端的响应,而所有变化对客户透明。,DAO(Data Access Object)数据访问对象:DAO与数据库或数据文件等持久层打交道,夹在业务逻辑与数据库资源中间,专门用于数据处理。,DAO模式,DAO模式是标准J2EE设计模式之一,开发人员使用这种模式将底层数据访问操作与高层业务逻辑分开。一个典型的DAO实现有以下组件:DAO工厂类:创建DAO实例DAO接口:用于外层与数据访问层隔离实现DAO接口的类:对外层隐藏底层数据库访问细节数据传输对象DTO:用于与客户交换数据DAO模式的优点:利用接口实现松耦合;简化数据移植;降低了业务对象中代码的复杂度;对持久化数据实现透明访问;对数据库结构提供面向对象的视图和封装;将所有数据访问代码组织到一个独立的层次中。,DAO设计模式实现实例,DAO工厂的实现,用JDBC的DAO工厂 使用环境:1.底层采用JDBC进行数据库操作,而且针对同一个数据库2.同一工厂实例创建的各DAO是同一个链接,以节省链接资源 3.对各个DAO的操作提供同一个事务4.对该事务提供提交、回滚操作5.提供关闭链接的方法,数据库连接池,数据库连接池:当服务器启动时,预先建立一定数量的数据库连接,并将其置于数据库连接池中,并一直维持不少于此数目的连接。当客户端需要操作数据库时,数据库连接池会返回一个未使用的连接并将其标记为忙。当客户端操作完数据库,将所使用的链接交还给链接池,并将连接标记为空闲。,连接池的分配与释放,对系统的性能有很大的影响。系统首先分配空闲的、建立时间最长(通过容器的顺序存放实现)的、有效的连接进行分配;无空闲连接时若未达到最大连接数(maxConn),就新建一个连接;若已达到就等待一定时间(timeout),有连接被释放时即分配,否则返回空值。,Tomcat连接池的实现,配置数据源在Tomcat安装目录下的confserver.xml文件中配置或在Web工程下的META-INFcontext.xml文件中配置在context.xml中配置数据源代码(Tomcat 5.5以上版本)如下:,标记各个属性解释:name:连接池对象绑定到JNDI上的名字(自由命名)driverClassName:连接数据库的驱动程序;url:连接数据库路径maxActive:连接池的最大数量;maxIdle:最大空闲连接数,-1不限制maxWait:最长等待连接时间,单位:毫秒,即置成-1表示不确定username、password:连接数据库使用的帐号与密码,获取连接,数据库连接池的优缺点,数据库连接池的优点服务器为客户端请求数据而与数据库建立连接时,会耗费一定的系统资源,如果服务器为每一次交易都建立独立的连接将加重服务器的负担,严重时会导致服务器崩溃。而采用连接池技术,将预先建立的连接分配给客户端的请求,一方面缩短了服务器响应时间,另一方面通过池化管理减轻了服务器负担。数据库连接池的缺点服务器启动时就会创建一定数量的数据库连接,事实上,这些连接都在等待服务器为其分配客户端的请求,当请求数目远远少于连接数目时,就会导致许多空连接,它们消耗了一定的系统资源。,

    注意事项

    本文(JSP中用JDBC访问数据库.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开