Java web 第13章、数据库应用.ppt_第1页
Java web 第13章、数据库应用.ppt_第2页
Java web 第13章、数据库应用.ppt_第3页
Java web 第13章、数据库应用.ppt_第4页
Java web 第13章、数据库应用.ppt_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

2020年6月7日,1,应用JDBC访问数据库,2020年6月7日,2,本节课的内容:,JDBC简介JDBC基本应用,2020年6月7日,3,JDBC是JavaSoft定义的数据库连接应用编程接口(JavaDatabaseConnectivityAPI),是Java核心API的一部分。JDBC允许使用Java编写的各种应用程序(Application、Applet、WebApplication等)以相同的形式访问、查询和修改远程数据库。JDBC定义了一系列的类,这些类可以用来在任何关系数据库中以相同的方式执行SQL语句。,1、JDBC简介,2020年6月7日,4,JDBC访问数据库使用的语言是标准的SQL语言,这样Java应用程序就可以利用一个简单的、标准的API(JDBCAPI)建立连接,而不用考虑数据库平台的类型。Java语言成为编写跨平台应用的最佳语言,JDBC技术起了非常重要的作用。,2020年6月7日,5,2、JDBC特点,调用级的SQL接口JDBC完全独立于各种DBMS。是一个低级的应用程序编程接口,允许Java程序发出SQL语句并接收SQL语句的执行结果。一致性的APIJDBC提供与Java系统其他部分完全相一致的Java接口。独立于数据库管理系统,连接不同的数据库只需更换与数据库管理系统相应的JDBC驱动即可,程序代码无需作任何修改。,2020年6月7日,6,3、构成JDBC的组件,JDBC连接数据库的典型结构主要有四个组件:JDBC应用程序驱动程序管理器驱动程序数据源,2020年6月7日,7,3.1JDBC应用程序利用JDBC代码来连接数据库、向数据库系统发送SQL语句、接收SQL执行结果。这部分代码需要完成的工作有:向数据库系统发出请求建立连接向数据库系统发送SQL语句为返回的结果集中的数据确定相应的数据类型查询和处理结果集处理数据库异常关闭连接,2020年6月7日,8,3.2JDBC驱动程序管理器作用是帮助客户应用程序装载和实例化特定的驱动程序。用于维护不同数据库创建的驱动器列表.把Java应用连接到Java程序指定的相应的驱动器上它要完成的任务有:定位和装载特定数据库的驱动程序处理JDBC驱动程序的初始化工作可以管理多个不同的数据库驱动程序,2020年6月7日,9,3.3JDBC驱动程序负责向数据库系统发送SQL语句,并接收执行结果。具体来说,驱动程序可以完成以下任务:建立与数据库的连接向数据库系统发送数据请求将数据库系统的错误代码转换为JDBC的错误代码可以管理结果集游标可以初始化事务,2020年6月7日,10,3.3.1JDBC驱动程序的分类JDBC驱动程序一般来说都包含在数据库当中,也有一些是软件商个别提供,它独立与数据库系统,但几乎所有的数据库系统都有自己的私有协议,来与客户端应用程序通信。所以JDBC驱动程序可以部分地利用这些已有的数据库引擎。按照JDBC对这些数据库引擎的依赖程度,JDBC驱动程序分为以下几类:JDBC-ODBC桥通过本地客户机网络代码连接数据库通过中间件连接数据库与DBMS直接连接,2020年6月7日,11,3.3.2JDBC-ODBC桥JDBC-ODBC桥是Java核心类提供的唯一的JDBC驱动器。这种驱动器的作用是把JDBC操作映射成相应的ODBC操作以满足应用程序的请求并返回结果。Java核心类提供的JDBC驱动器的Java类名为sun.jdbc.odbc.JdbcOdbcDriver。优点:Windows操作系统缺省地包括ODBC,使得ODBC数据源的创建非常简单。缺点:是这种数据源通常只在Windows操作系统平台上运行,同时这种驱动器的性能比较低.,2020年6月7日,12,3.3.3通过本地客户机网络代码连接数据库,多数数据库产品提供客户机接口,通过它与数据库服务器交互,如Oralce提供的用C+编写的OCI程序。而使用之前必须安装Oralce网络软件,这样客户机才能访问数据库服务器。而这类JDBC驱动程序的作用就是将JDBC数据库调用转换为本地客户数据库调用。优点:使用DBMS优化的本地客户驱动,可以获得较好的效率和速度。缺点:这类驱动程序在发布时要求相应的客户机上都有安装相应DBMS的客户机网络软件。,2020年6月7日,13,3.3.4JDBC网络纯Java驱动器,这一类驱动程序完全用Java编写,它将JDBC请求转换为一种独立于特定DBMS的网络协议,并发送给一个中间件服务器。中间件服务器的作用是将这种协议转换为特定数据库的请求格式。缺点:是要求服务器方组件;优点:是当服务器上使用的数据库平台改变时可以不用修改客户端代码;,2020年6月7日,14,3.3.5本地协议纯Java驱动器,这类JDBC驱动程序完全用Java编写,这种JDBC驱动程序直接与数据库服务器进行通信。这类驱动程序非常容易使用,因为要访问数据库只需要该驱动程序本身,不需要其他客户机/服务器方的通信软件,大大简化了应用程序的发布。,2020年6月7日,15,3.4数据源,由用户应用程序要访问的数据库系统和自身的参数组成。一般来讲,从Java程序角度而言,数据源体现为一种配置信息,它代表了Java要连接到某种数据来源时应提供的参数。另外要注意的是,数据来源不仅仅是数据库,也可能是网站的响应、本地XML文件,甚至是本地的一个文本文件。使用数据源的概念,我们可以把各种异构的数据统一使用JDBC来访问。,2020年6月7日,16,JDBCAPI包含一组类和接口,用于连接数据库,以及JDBC驱动程序管理器和各种不同的JDBC驱动程序之间的接口。JDBCAPI分为两种:JDBCAPIJDBC驱动程序API。,4、JDBCAPI,2020年6月7日,17,JDBCAPI(ApplicationProgrammingInterface):是JDK(JavaDevelopmentKit)的一部分使Java应用与数据库通信,2020年6月7日,18,JDBCAPI是为数据库开发人员提供的一些可编程的接口。供程序员编程使用的常用的接口有:java.sql.DriverManager:处理驱动器的加载、数据库连接的建立。java.sql.Connection:处理特定数据库的连接。java.sql.Statement处理数据库连接中的SQL语句。有2个子接口java.sql.PreparedStatement:用于处理带有参数的SQL语句。java.sql.CallableStatement:处理数据库存储过程java.sql.ResultSet:处理数据库操作的结果集。,2020年6月7日,19,5、访问数据库,JDBCAPI的大部分的类和接口包含在java.sql包中,java.sql包包含了大多数的Java标准发布版本中。另外JDBC的扩展API部分包含在javax.sql包中。由于JDBCAPI只是为数据库开发人员提供的一个可编程的接口,因此,在使用JDBC访问数据库之前,必须安装JDBC驱动程序:首先要下载JDBC驱动程序,它通常打包为JAR文件,然后必须把该文件存放在CLASSPATH所包含的目录中。,2020年6月7日,20,按以下几步访问数据源:装载驱动程序建立数据库连接建立语句并发送SQL语句关闭数据库连接检索数据参见:UseDriver.java,2020年6月7日,21,使用JDBC的第一步是指定数据库所需要的特定的JDBC驱动程序。第一种方式是显式地装载JDBC驱动程序,只需要一行代码,如:Class.forName(com.mysql.jdbc.Driver);Class.forName(“oracle.jdbc.driver。OracleDriver);若选用的JDBC驱动程序不存在或存放位置不在CLASSPATH内,上述代码会抛出ClassNotFoundException异常,因此通常要把此句封闭在try/catch块中。,5.1、装载驱动程序,2020年6月7日,22,一旦装载了数据库驱动程序,第二步是建立到数据库的连接。这是通过DriverManager类的getConnection()方法来完成的。例如:Connectionconn=DriverManager.getConnection(“url,id,password);Connectionconn=DriverManager.getConnection(jdbc:mysql:/localhost/sql_test),5.2、建立数据库连接,2020年6月7日,23,JDBC数据源URLJDBC数据源使用的URL语法的形式为:jdbc:其中jdbc表示使用的协议是jdbc,sunprotocol字段表示使用的JDBC驱动程序名,subname是根据子协议而确定的参数字符串。再比如:jdbc:odbc:datasource和jdbc:microsoft:sqlserver:/localhost:1433;databaseName=master代码实例:UseDriverManager.java,2020年6月7日,24,如果已经装载了数据库驱动程序并创建了数据库连接conn,现在可以向数据库服务器发送SQL语句。这是通过创建Statement对象将SQL语句发送给数据库并返回执行结果。有三种Statement对象:StatementPreparedStatementCallableStatement,5.3、建立Statement对象执行SQL语句,2020年6月7日,25,5.3.1StatementStatement只是一个接口,没有构造函数,不能直接创建它的实例,但Connection接口提供了createStatement()方法用于创建Statement对象例如:Connectionconn=DriverManager.getConnection(url,userName,password);Statementstmt=conn.createStatement();,2020年6月7日,26,Statement接口有四个基本的方法可以使用,分别是:executeQuery()executeUpdate()execute()executeBatch(),2020年6月7日,27,executeQuery()方法用于执行产生单个结果集的SQL语句,其返回值是一个结果集。对于需要返回结果集的SELECT语句,应当使用executeQuery()方法,该方法只有一个字符串参数,用来存放SELECT语句,查询成功则以ResultSet对象的形式返回查询结果。例如:Stringsql=select*fromstudents;ResultSetrs=stmt.executeQuery(sql);代码实例:UseExecuteQuery.java,2020年6月7日,28,executeUpdate()方法如果调用INSERT、UPDATE、DELETE不需返回查询结果的SQL语句,应采用executeUpdate()方法。executeUpdate()方法接受String类型的SQL语句作参数,返回类型为int。如果返回值为0则表示SQL语句不返回任何数据,否则返回数据库中受到INSERT、UPDATE、DELETE语句影响的数据行数。例如:Stringsql=DELETEFROMSTUDENTWHERESCORE=60;intret=stmt.executeUpdate(sql);,2020年6月7日,29,executeUpdate()也可以用于执行数据定义的SQL语句,如createtable和droptable等,其返回值总是为零。代码实例:UseExecuteUpdate.java,2020年6月7日,30,execute()方法即可以执行查询也可以执行修改语句。常用于处理未知的SQL语句。但若事先已知SQL语句的情况下提倡使用executeQuery()和executeUpdate()方法通常在使用存储过程的情况下,一个单一的SQL语句返回多个结果集或多个更新计数,必须使用execute()方法。,2020年6月7日,31,execut

温馨提示

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

评论

0/150

提交评论