第07章-JSP操作数据库课件_第1页
第07章-JSP操作数据库课件_第2页
第07章-JSP操作数据库课件_第3页
第07章-JSP操作数据库课件_第4页
第07章-JSP操作数据库课件_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第7章JSP操作数据库信息工程学院2009.10目的JDBC是在Java中访问数据库的一种技术。本章主要探讨JDBC的架构与运作方式,建立有关JDBC的完整的基础概念,并能够快速上手开发JSP数据库应用程序。

至于JDBC

API本身的详内容,建议大家查阅相关的JDBC资料。本章的主要内容:JDBC简介JDBC驱动程序JDBCAPI类与接口MySQL的安装与使用JDBC操作MySQL数据库JDBC事务操作数据库连接池7.1JDBC简介JDBC是一种可用于执行SQL语句的JavaAPI(ApplicationProgrammingInterface应用程序编程接口)。它由一些Java类和接口组成。JDBC为数据库应用开发人员、数据库前台工具开发人员提供了一种标准的应用程序设计接口,使开发人员可以用纯Java语言编写完整的数据库应用程序。

ODBC(OpenDatabaseConnectivity)微软制定的一个C语言与数据库的统一接口JDBC(JavaDatabaseConnectivity)为Java语言定义的一个SQL调用级的统一接口。为访问关系数据库提供了一个标准的接口。JDK1.2中已包括了JDBC2.0的内容。7.2JDBC驱动程序JDBCAPI提供了一组Java类与接口,用以完成对数据库的访问。驱动程序驱动程序管理器连接语句预处理语句可调用语句结果集结果集结果集驱动程序层应用程序层应用层:这一层的API主要是给数据库应用程序的开发者使用的,也就是说,如果只须要使用SQL语句,来操作数据库,如添加、修改或删除等,那么了解应用层的API就可。驱动层驱动层的API则是编写驱动的厂商才会用到。因此当我们开发JDBC应用程序时,还须用到厂商提供的JDBC驱动程序,才能与数据库连接。JavaapplicationJDBCDriverManagerJDBCAPIJDBCDriver(数据库厂家提供)JDBCDriverAPIDBMS什么是JDBC驱动?JDBC驱动程序一大堆实现了JDBC类和接口的类提供了一个实现java.sql.Driver接口的类一般而言,是一个jar的java类的归档包驱动程序的类型一般而言,厂商提供的JDBC驱动程序可以分为四大类:Type1:JDBC-ODBC(开放数据库连接)桥。Type2:本地API,部分的Java驱动。Type3:网络协议,完全的Java驱动。Type4:本地协议,完全的Java驱动。目前,JDBCAPI的版本是3.0,网上的驱动大部分为2.0的。Type1类型驱动(JDBC-ODBC桥)应用程序Type1JDBC-ODBC桥接器ODBC驱动程序数据库SQL结果集

Jdbc-odbc桥是由sun公司提供的,是jdk提供的的标准api。这种类型的驱动实际是把所有jdbc的调用传递给odbc,再由odbc调用本地数据库驱动代码。(本地数据库驱动代码是指由数据库厂商提供的数据库操作二进制代码库,例如在oracleforwindows中就是oci.dll文件)

由于jdbc-odbc先调用odbc再由odbc去调用本地数据库接口访问数据库。所以,执行效率比较低。对于那些大数据量存取的应用是不适合的Type2类型驱动(本地API驱动)应用程序Type2JDBC驱动程序原生驱动程序数据库SQL结果集

本地api驱动直接把jdbc调用转变为数据库的标准调用再去访问数据库。这种方法需要本地数据库驱动代码。

这种驱动比起jdbc-odbc桥执行效率大大提高了。但它仍然需要在客户端加载数据库厂商提供的代码库。这样就不适合基于internet的应用。并且,执行效率比起3、4型的jdbc驱动还是不够高。

Type3类型驱动应用程序Type3JDBC驱动程序中介软件数据库SQL结果集

这种驱动实际上是根据我们熟悉的三层结构建立的。jdbc先把对数据库的访问请求传递给网络上的中间件服务器。中间件服务器再把请求翻译为符合数据库规范的调用,再把这种调用传给数据库服务器。

如果中间件服务器也是用java开法的,那么在在中间层也可以使用1、2型jdbc驱动程序作为访问数据库的方法。

Type4类型驱动(网络协议驱动)应用程序Type4JDBC驱动程序数据库SQL结果集

这种驱动直接把jdbc调用转换为符合相关数据库系统规范的请求。由于4型驱动写的应用程序可以直接和数据库服务器通讯。这种类型的驱动完全由java实现,因此实现了平台独立性。

由于这种驱动不需要先把jdbc的调用传给odbc或本地数据库接口或者是中间层服务器.所以它的执行效率是非常高的。7.3JDBCAPI类与接口JDBCAPI作为Java访问数据库的技术,应能满足下面的功能:建立与数据库的连接发送SQL语句处理数据库操作结果为此,JDBC提供了一系列的接口与类来完成此任务。1.DriverManager类它保存了系统中可用的驱动程序的列表,是唯一的一个服务类。JDBC与数据库连接的第一个步骤为加载驱动程序,一般使用Class.forName(“驱动程序的类名”)。Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”)Class.forName(“com.mysql.jdbc.Driver”)加载程序之后,驱动程序一般会建立一个Driver对象,并调用DriverManager类的registerDriver()自动注册此对象。2.Driver接口是每一个驱动程序都必须实现的接口。当Driver被加载时它的staic部分的代码就会执行,通过DriverManager注册这个驱动。现在,只要客户端应用程序通过DriverManger.getConnection()方法,DriverManager就会转而调用<Driver>.connect()方法,来完成与数据库的连接。有自己唯一的JDBCURL格式。3.Connection接口表示到特定数据库的连接。当完成加载驱动程序后,就可以用DriverManager类的getConnection()来建立一个对象。其语法如下:DriverManager.getConnection(url)或DriverManager.getConnection(url,

user,password)两种方法可以,结果一样。JDBCURL格式定义URL定义了驱动程序与数据来源间的连接信息,JDBCURL的标准的语法如下:

<协议>:<子协议>:<数据来源描述><协议>主要通迅协议<子协议>次要通迅协议,即驱动程序名称<数据来源描述>数据库连接描述信息JDBC-ODBCURLJdbc:odbc:<datasource>?user=*&password=*MySQLJdbc:mysql://ip:port/db?param=value4.Statement接口主要用来执行SQL语句,一般而言,我们会用到它的2个方法:executeQuery(sql)执行一个SQL语句,返回一个ResultSet对象executeUpdate(sql)执行一个SQL语句,返回一个整数。同一时间每个Statement对象在只能打开一个ResultSet对象。PreparedStatement接口表示预编译的SQL语句的对象。

SQL语句被预编译并且存储在PreparedStatement对象中。然后可以使用此对象高效地多次执行该语句。

可以在SQL语句中使用参数。PreparedStatement

pstmt=con.prepareStatement("UPDATEEMPLOYEESSETSALARY=?WHEREID=?");pstmt.setBigDecimal(1,153833.00)pstmt.setInt(2,110592)用来设置

参数值的setter方法(setShort、setString等等)必须指定与输入参数的已定义SQL类型兼容的类型。例如,如果参数具有SQL类型INTEGER,那么应该使用setInt方法。5.ResultSet接口从查询返回结果集。ResultSet对象内有一个隐藏的光标。在开始时,其指向第一笔数据前。若要使光标下移,须用next()方法将指向记录的光标下移。如:while(rs.next()){…}ResultSet对象是以统一的形式的列组织数据行的。ResultSet对象一次只能看到一个数据行,使用next()方法移到下一数据行,ResultSet可以使用getXxx方法获获得字段值,将列位置索引(第一列用1,第二列用2)或字段名传递给getXxx方法作为参数即可。Xxx基本与Java类型相同的名称,可查看JDK手册。ResultSet接口提供用于从当前行检索列值的获取方法(getBoolean、getLong等)。可以使用列的索引编号或列的名称检索值。一般情况下,使用列索引较为高效。列从1开始编号。为了获得最大的可移植性,应该按从左到右的顺序读取每行中的结果集列,而且每列只能读取一次。

对于获取方法,JDBC驱动程序尝试将基础数据转换为在获取方法中指定的Java类型,并返回适当的Java值。JDBC规范有一个表,显示允许的从SQL类型到供ResultSet获取方法使用的Java类型的映射关系。

JDBC应用程序开发的步骤加载驱动程序连接到数据库(取得连接对象)创建Statement类型的对象向数据库发送SQL语句处理查询结果关闭连接7.4MySQL的安装与使用上面介绍了JDBC的概念后,接下来将通过实际的操作来讲解JDBC的使用。市场上常见的关系数据库产品有:oracle、MSSQL、DB2和MySQL等。在这里将选择MySQL数据库产品作为例子来讲解如何使用JDBC操作数据库。最新版本为5.0,可参考

非商用免费,多平台,性能不错1.到下载或以其它方式得到

适合版本的MySQL。2.安装。基本很简单,但在安装时要注意,请安装在盘c:\mysql中,如果安装在其它盘,请在c:\中创建一个f或my.ini文件。其中内容主要为:[mysqld]Basedir=你的mysql的安装路径3.将MySQL安装为windows服务<mysqlpath>\bin\mysqld-max-nt–install删除服务用:<mysqlpath>\bin\mysqld-max-nt–remove4.启动或关闭服务netstartmysqlnetstopmysql5.管理mysql控制台或用Navicat第三方软件6.mysql命令行工具的使用mysql–uroot–p建库createdatabaseDataBaseName选择数据库useDataBaseName建表createtable…DML数据库操作导入与导出mysql、mysqldump(在DOS命令行中输入)mysqldump–uroot>d:\db.sqlmysql–urootdb<d:\db.sql用户管理<具体查看mysql手册>7.EMSMySQL数据库管理软件7.5JDBC操作MySQL方法安装jdbc驱动程序。用Class类加载驱动程序。用DriverManager,根据相应的JDBC

URL定义驱动程序和数据来源之间的连接信息,并创建连接对象。创建Statement对象,并且用它来执行SQL语句。如果SQL有返回的ResultSet对象,对其进行处理。用完后关闭对象。7.5.1

基本操作:MySQL中创建数据库查询数据,并显示(用循环)参数查询字任串拼接SQL语句参数

数据添加insert数据修改update数据删除delete7.5.2

分页查询假设总记录数为m,第页的显示数为n,那么总页数的计算公式为:如果m/n的余数为零,总页数等于m/n的商。如果m/n的余数不为零,总页数等于m/n的商加1。总页数=m%n==0?m/n:m/n+1如果要显示第p页的内容,则应把游标移动到(p-1)*n+1处。7.6JDBC对事务的操作数据库事务的特性Jdbc事务流程

Jdbc中的事务处理默认自动提交的,可以通过setAutoCommit(false)来取消自动提交。然后调用commit()提交

或rollback()来取消事务。JDBC对事务级别的管理7.7

数据库连接池使用同步(共享)连接原理:创建一个作为类成员的连接对象,供多个线程使用。连接池在同步(共享)连接中,如果预先多创建几个连接,供程序使用,这就是连接池的基本本原理。7.7.1数据库连接池

一般情况下,在开发基于数据库的WEB程序时,传统的模式基本是按以下步骤:

1)在主程序(如jsp、Servlet、Beans)

中建立数据库连接。

2)进行SQL操作,取出数据。

3)断开数据库连接。

使用这种模式开发,存在问题:首先,要为每一次WEB请求(例如察看某一篇文章的内容)建立一次数据库连接,对于一次或几次操作来讲,或许你觉察不到系统的开销,但是,对于WEB程序来

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论