第07章-JSP操作数据库课件

上传人:无*** 文档编号:241638554 上传时间:2024-07-12 格式:PPT 页数:43 大小:306KB
返回 下载 相关 举报
第07章-JSP操作数据库课件_第1页
第1页 / 共43页
第07章-JSP操作数据库课件_第2页
第2页 / 共43页
第07章-JSP操作数据库课件_第3页
第3页 / 共43页
点击查看更多>>
资源描述
第7章 JSP操作数据库信息工程学院2009.10目的 JDBC是在Java中访问数据库的一种技术。本章主要探讨JDBC的架构与运作方式,建立有关JDBC的完整的基础概念,并能够快速上手开发JSP数据库应用程序。至于JDBCAPI本身的详内容,建议大家查阅相关的JDBC资料。本章的主要内容:JDBC简介JDBC驱动程序JDBC API类与接口MySQL的安装与使用JDBC操作MySQL数据库JDBC 事务操作数据库连接池7.1 JDBC简介JDBC是一种可用于执行SQL语句的Java API(Application Programming Interface应用程序编程接口)。它由一些Java类和接口组成。JDBC为数据库应用开发人员、数据库前台工具开发人员提供了一种标准的应用程序设计接口,使开发人员可以用纯Java语言编写完整的数据库应用程序。ODBC(Open Database Connectivity)l微软制定的一个C语言与数据库的统一接口JDBC(Java Database Connectivity)l为Java语言定义的一个SQL调用级的统一接口。l为访问关系数据库提供了一个标准的接口。lJDK1.2中已包括了JDBC2.0的内容。7.2 JDBC 驱动程序JDBC API提供了一组Java类与接口,用以完成对数据库的访问。驱动程序驱动程序管理器连接语句预处理语句可调用语句结果集结果集结果集驱动程序层应用程序层应用层:l这一层的API主要是给数据库应用程序的开发者使用的,也就是说,如果只须要使用SQL语句,来操作数据库,如添加、修改或删除等,那么了解应用层的API就可。驱动层l驱动层的API则是编写驱动的厂商才会用到。因此当我们开发JDBC应用程序时,还须用到厂商提供的JDBC驱动程序,才能与数据库连接。Java applicationJDBC Driver ManagerJDBC APIJDBC Driver(数据库厂家提供)JDBC Driver APIDBMS 什么是JDBC驱动?JDBC驱动程序l一大堆实现了JDBC类和接口的类l提供了一个实现java.sql.Driver接口的类l一般而言,是一个jar的java类的归档包驱动程序的类型一般而言,厂商提供的JDBC驱动程序可以分为四大类:lType1:JDBC-ODBC(开放数据库连接)桥。lType2:本地API,部分的Java驱动。lType3:网络协议,完全的Java 驱动。lType4:本地协议,完全的Java驱动。目前,JDBC API的版本是3.0,网上的驱动大部分为2.0的。Type 1 类型驱动(JDBC-ODBC桥)应用程序Type 1 JDBC-ODBC桥接器ODBC驱动程序数据库SQL结果集 Jdbc-odbc 桥是由sun公司提供的,是jdk提供的的标准api。这种类型的驱动实际是把所有jdbc的调用传递给odbc,再由odbc调用本地数据库驱动代码。(本地数据库驱动代码是指由数据库厂商提供的数据库操作二进制代码库,例如在oracle for windows中就是oci.dll 文件)由于jdbc-odbc先调用odbc再由odbc去调用本地数据库接口访问数据库。所以,执行效率比较低。对于那些大数据量存取的应用是不适合的Type 2 类型驱动(本地API驱动)应用程序Type 2 JDBC驱动程序原生驱动程序数据库SQL结果集 本地api驱动直接把jdbc调用转变为数据库的标准调用再去访问数据库。这种方法需要本地数据库驱动代码。这种驱动比起jdbc-odbc桥执行效率大大提高了。但它仍然需要在客户端加载数据库厂商提供的代码库。这样就不适合基于internet的应用。并且,执行效率比起3、4型的jdbc驱动还是不够高。Type 3 类型驱动应用程序Type 3 JDBC驱动程序中介软件数据库SQL结果集 这种驱动实际上是根据我们熟悉的三层结构建立的。jdbc先把对数据库的访问请求传递给网络上的中间件服务器。中间件服务器再把请求翻译为符合数据库规范的调用,再把这种调用传给数据库服务器。如果中间件服务器也是用java开法的,那么在在中间层也可以使用1、2型jdbc驱动程序作为访问数据库的方法。Type 4 类型驱动(网络协议驱动)应用程序Type 4 JDBC驱动程序数据库SQL结果集 这种驱动直接把jdbc调用转换为符合相关数据库系统规范的请求。由于4型驱动写的应用程序可以直接和数据库服务器通讯。这种类型的驱动完全由java实现,因此实现了平台独立性。由于这种驱动不需要先把jdbc的调用传给odbc或本地数据库接口或者是中间层服务器.所以它的执行效率是非常高的。7.3 JDBC API类与接口JDBC API作为Java访问数据库的技术,应能满足下面的功能:l建立与数据库的连接l发送SQL语句l处理数据库操作结果为此,JDBC提供了一系列的接口与类来完成此任务。1.DriverManager类它保存了系统中可用的驱动程序的列表,是唯一的一个服务类。JDBC与数据库连接的第一个步骤为加载驱动程序,一般使用Class.forName(“驱动程序的类名”)。lClass.forName(“sun.jdbc.odbc.JdbcOdbcDriver”)lClass.forName(“com.mysql.jdbc.Driver”)加载程序之后,驱动程序一般会建立一个Driver对象,并调用DriverManager类的registerDriver()自动注册此对象。2.Driver接口是每一个驱动程序都必须实现的接口。当Driver被加载时它的staic部分的代码就会执行,通过DriverManager注册这个驱动。现在,只要客户端应用程序通过DriverManger.getConnection()方法,DriverManager就会转而调用.connect()方法,来完成与数据库的连接。有自己唯一的JDBC URL格式。3.Connection接口表示到特定数据库的连接。当完成加载驱动程序后,就可以用DriverManager类的getConnection()来建立一个对象。其语法如下:lDriverManager.getConnection(url)l或DriverManager.getConnection(url,user,password)两种方法可以,结果一样。JDBC URL格式定义URL定义了驱动程序与数据来源间的连接信息,JDBC URL的标准的语法如下::l 主要通迅协议l次要通迅协议,即驱动程序名称l数据库连接描述信息JDBC-ODBC URLlJdbc:odbc:?user=*&password=*MySQLlJdbc:mysql:/ip:port/db?param=value4.Statement接口主要用来执行SQL语句,一般而言,我们会用到它的2个方法:lexecuteQuery(sql)执行一个SQL语句,返回一个ResultSet对象lexecuteUpdate(sql)执行一个SQL语句,返回一个整数。同一时间每个 Statement 对象在只能打开一个 ResultSet 对象。PreparedStatement接口表示预编译的 SQL 语句的对象。SQL 语句被预编译并且存储在 PreparedStatement 对象中。然后可以使用此对象高效地多次执行该语句。可以在SQL语句中使用参数。PreparedStatement pstmt=con.prepareStatement(UPDATE EMPLOYEES SET SALARY=?WHERE ID=?);pstmt.setBigDecimal(1,153833.00)pstmt.setInt(2,110592)用来设置 参数值的 setter 方法(setShort、setString 等等)必须指定与输入参数的已定义 SQL 类型兼容的类型。例如,如果参数具有 SQL 类型 INTEGER,那么应该使用 setInt 方法。5.ResultSet接口从查询返回结果集。ResultSet对象内有一个隐藏的光标。在开始时,其指向第一笔数据前。若要使光标下移,须用 next()方法将指向记录的光标下移。如:lwhile(rs.next()l lResultSet对象是以统一的形式的列列组织数据行行的。ResultSet对象一次只能看到看到一个数据行,使用next()方法移到下一数据行,ResultSet可以使用getXxx方法获获得字段值,将列位置索引(第一列用1,第二列用2)或字段名传递给getXxx方法作为参数即可。Xxx基本与Java类型相同的名称,可查看JDK手册。ResultSet 接口提供用于从当前行检索列值的获取方法(getBoolean、getLong 等)。可以使用列的索引编号或列的名称检索值。一般情况下,使用列索引较为高效。列从 1 开始编号。为了获得最大的可移植性,应该按从左到右的顺序读取每行中的结果集列,而且每列只能读取一次。对于获取方法,JDBC 驱动程序尝试将基础数据转换为在获取方法中指定的 Java 类型,并返回适当的 Java 值。JDBC 规范有一个表,显示允许的从 SQL 类型到供 ResultSet 获取方法使用的 Java 类型的映射关系。JDBC应用程序开发的步骤1.加载驱动程序2.连接到数据库(取得连接对象)3.创建Statement类型的对象4.向数据库发送SQL语句5.处理查询结果6.关闭连接7.4 MySQL的安装与使用上面介绍了JDBC的概念后,接下来将通过实际的操作来讲解JDBC的使用。市场上常见的关系数据库产品有:oracle、MSSQL、DB2和MySQL等。在这里将选择MySQL数据库产品作为例子来讲解如何使用JDBC操作数据库。最新版本为5.0,可参考 http:/非商用免费,多平台,性能不错1.到http:/下载或以其它方式得到 适合版本的MySQL。2.安装。l基本很简单,但在安装时要注意,请安装在盘c:mysql中,如果安装在其它盘,请在c:中创建一个f或my.ini文件。其中内容主要为:mysqldBasedir=你的mysql的安装路径3.将MySQL安装为windows服务binmysqld-max-nt install删除服务用:binmysqld-max-nt remove4.启动或关闭服务net start mysqlnet stop mysql5.管理mysql控制台或用Navicat第三方软件6.mysql命令行工具的使用lmysql uroot pl建库 create database DataBaseNamel选择数据库 use DataBaseNamel建表 create table lDML 数据库操作l导入与导出 mysql、mysqldump(在DOS命令行中输入)mysqldump uroot d:db.sqlmysql uroot dbd:db.sqll用户管理l7.EMS MySQL数据库管理软件7.5 JDBC操作MySQL方法1.安装jdbc驱动程序。2.用Class类加载驱动程序。3.用DriverManager,根据相应的JDBC URL定义驱动程序和数据来源之间的连接信息,并创建连接对象。4.创建Statement对象,并且用它来执行SQL语句。5.如果SQL有返回的ResultSet对象,对其进行处理。6.用完后关闭对象。7.5.1 基本操作:MySQL中创建数据库查询数据,并显示(用循环)参数查询l字任串拼接lSQL语句参数 数据添加 insert数据修改 update 数据删除 delete 7.5.2 分页查询假设总记录数为m,第页的显示数为n,那么总页数的计算公式为:l如果m/n的余数为零,总页数等于m/n的商。l如果m/n的余数不为零,总页数等于m/n的商加1。l总页数=m%n=0?m/n:m/n+1如果要显示第p页的内容,则应把游标移动到(p-1)*n+1处。7.6 JDBC对事务的操作数据库事务的特性Jdbc事务流程 Jdbc中的事务处理默认自动提交的,可以通过setAutoCommit(false)来取消自动提交。然后调用commit()提交 或rollback()来取消事务。JDBC对事务级别的管理7.7 数据库连接池使用同步(共享)连接l原理:创建一个作为类成员的连接对象,供多个线程使用。连接池l在同步(共享)连接中,如果预先多创建几个连接,供程序使用,这就是连接池的基本本原理。7.7.1 数据库连接池 一般情况下,在开发基于数据库的WEB程序时,传统的模式基本是按以下步骤:1)在主程序(如jsp、Servlet、Beans)中建立数据库连接。2)进行SQL操作,取出数据。3)断开数据库连接。使用这种模式开发,存在问题:首先,要为每一次WEB请求(例如察看某一篇文章的内容)建立一次数据库连接,对于一次或几次操作来讲,或许你觉察不到系统的开销,但是,对于WEB程序来讲,即使在某一较短的时间段内,其操作请求数也远远不是一两次,而是数十上百次(想想全世界的网友都有可能在您的网页上查找资料),在这种情况下,系统开销是相当大的。事实上,在一个基于数据库的WEB系统中,建立数据库连接的操作将是系统中代价最大的操作之一。很多时候,网站速度瓶颈就在于此。其次,使用传统的模式,必须去管理每一个连接,确保他们能被正确关闭,如果出现程序异常而导致某些连接未能关闭,将导致数据库系统中的内存泄露,最终我们将不得不重启数据库。解决办法:针对以上问题,我们首先想到可以采用一个全局的Connection对象,创建后就不关闭,以后程序一直使用它,这样就不存在每次创建、关闭连接的问题了。但是,同一个连接只能在同一时刻只能为一个访问者服务,在大量并发访问时,将极大的影响系统性能。因而,这种方法也不可取。实际上,我们可以使用连接池技术来解决上述问题。首先,介绍一下连接池技术的基本原理。顾名思义,连接池最基本的思想就是预先建立一些连接放置于内存对象中以备使用。、jsp如图所示,当程序中需要建立数据库连接时,只须从内存中取一个来用而不用新建。同样,使用完毕后,只需放回内存即可。而连接的建立、断开都有连接池自身来管理。同时,我们还可以通过设置连接池的参数来控制连接池中的连接数、每个连接的最大使用次数等等。通过使用连接池,将大大提高程序效率,同时,我们可以通过其自身的管理机制来监视数据库连接的数量、使用情况等。小结JDBC基本概念JDBC常用接口和类JDBC操作MySQL的基本方法l注意中文问题分页查询的基本思想与代码理解数据库连接池原理
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!