利用JDBC进行Oracle访问.ppt

上传人:牧羊曲112 文档编号:5932776 上传时间:2023-09-05 格式:PPT 页数:29 大小:337.50KB
返回 下载 相关 举报
利用JDBC进行Oracle访问.ppt_第1页
第1页 / 共29页
利用JDBC进行Oracle访问.ppt_第2页
第2页 / 共29页
利用JDBC进行Oracle访问.ppt_第3页
第3页 / 共29页
利用JDBC进行Oracle访问.ppt_第4页
第4页 / 共29页
利用JDBC进行Oracle访问.ppt_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《利用JDBC进行Oracle访问.ppt》由会员分享,可在线阅读,更多相关《利用JDBC进行Oracle访问.ppt(29页珍藏版)》请在三一办公上搜索。

1、课程目标,掌握基本的数据库配置和管理熟练掌握 SQL 命令和 SQL 函数理解 Oracle 数据库体系结构使用 Oracle 的各种数据库对象使用 PL/SQL 编写存储过程使用 PL/SQL 编写触发器掌握基本的Oracle数据库管理,2,第十一章 利用JDBC进行Oracle访问,目标,4,概述,JDBC(Java Database Connectivity)对 ODBC API面向对象的封装和重新设计,使它易于学习和使用,而且能够编写不依赖厂商的代码,用以查询和操纵数据库。与所有 Java API 一样,它是面向对象的,但并不是很高级别的对象集.JDBC可以访问包括Oracle在内的各

2、种不同数据库,但Oracle数据库包含许多独特的特性,只能通过使用标准JDBC的Oracle扩展来使用。Oracle扩展可尽可能的发挥JDBC能力。,5,Oracle JDBC驱动程序,1 Thin 驱动程序2 OCI驱动程序3 服务器端内部驱动程序4服务器端Thin驱动程序,6,使用Oracle JDBC,导入JDBC包 import java.sql.*;,7,注册JDBC驱动程序,有两种注册Oracle JDBC驱动程序的方法。第一种使用:”);第二种方法使用DriverManager。DriverManager 类是 JDBC 的管理层,作用于用户和驱动程序之间。它跟踪可用的驱动程序,

3、并在数据库和相应驱动程序之间建立连接。另外,DriverManager 类也处理诸如驱动程序登录时间限制及登录和跟踪消息的显示等事务。DriverManager.registerDriver(new();,8,打开数据流,DriverManager.getConnection(URL,username,password);JDBC URL 的标准语法如下所示。它由三部分组成,各部分间用冒号分隔:jdbc:JDBC URL 的三个部分可分解如下:jdbc 协议。JDBC URL 中的协议总是 jdbc。子协议即将使用的驱动程序,子名称是oracle数据库服务名。Username 程序连接数据库时

4、使用的数据库用户名。Password 用户名口令。,9,执行sql语句,1、创建 Statement 对象Statement stmt=con.createStatement();2、使用 Statement 对象执行语句ResultSet rs=stmt.executeQuery(SELECT a,b,c FROM Table2);3、关闭 Statement 对象stmt.close();,获得查询结果集,ResultSet rs=stmt.executeQuery(“select 语句”);while(xt()数据类型 variable_name=rs.get(字段脚标或字段名);,关闭

5、数据流,关闭数据流连接是采用Connection对象的close方法。即时关闭数据流可以减少内存占用。语句如下:con.close();,12,在JDBC中调用存储过程,CallableStatement对象为所有的 DBMS 提供了一种以标准形式调用存储过程的方法。有两种调用形式:一种形式带结果参数,另一种形式不带结果参数。在 JDBC 中调用存储过程的语法如下所示。注意,方括号表示其间的内容是可选项;方括号本身并非语法的组成部份。call 过程名(?,?,.)返回结果参数的存储过程的语法为:?=call 过程名(?,?,.)不带参数的存储过程的语法类似:call 过程名,创建 Callab

6、leStatement 对象,CallableStatement 象是用Connection 方法prepareCall创建的。下例创建 CallableStatement的实例,其中含有对存储过程getEMPData 调用。该过程有两个变量,但不含结果参数:CallableStatement cstmt=con.prepareCall(call getEMPData(?,?);其中?占位符为IN、OUT还是INOUT参数,取决于存储过程getEMPData。,14,IN和OUT参数,将IN参数传给CallableStatement对象是通过setXXX方法完成的。所传入参数的类型决定了所用的

7、setXXX方法(例如,用setFloat来传入float值等)。如果存储过程返回OUT参数,则在执行CallableStatement对象以前先注册每个OUT参数的JDBC类型,使用registerOutParameter方法来注册。语句执行完后,CallableStatement的getXXX 方法将取回参数值。registerOutParameter使用的是JDBC类型(因此它与数据库返回的JDBC类型匹配),而getXXX 将之转换为Java 类型。,既支持输入又接受输出的参数(INOUT参数)既要调用registerOutParameter方法,还要调用合适的setXXX 方法。se

8、tXXX 方法将参数设置为输入参数,registerOutParameter方法将它的JDBC类型注册为输出参数。应该引起注意的是,IN值的JDBC类型和提供给registerOutParameter方法的JDBC类型必须相同。,INOUT参数,INOUT参数,检索输出值时,使用对应的getXXX 方法。例如,Java 类型为int的参数应该使用方法 setInt来赋输入值。应该给registerOutParameter提供类型为INTEGER 的 JDBC 类型。,处理SQL异常,类定义了四个方法,可以帮助查找判断出错原因。getErrorCode()getMessage()getSQLSt

9、ate()printStackTrace(),小结,JDBC是一个软件层,允许开发者在Java中编写客户端/服务器程序,它提供了简单的接口用于执行原始的SQL语句。Oracle支持简单的JDBC访问和开发,提供了很多图形化的应用程序支持开发Java程序,如Container for J2EE、Jdeveloper,涵盖了性能调整、如何开发J2EE组件和Java存储过程等技术。,简例,2)编写程序。利用UPDATE语句和WHERE条件中的CURRENT OF子句。SQL declare 2 cursor salcur(depno number)is 3 select sal from emp w

10、here deptno=depno for update of sal;4 new_sal number;5 begin 6 for currentsal in salcur(20)loop 7 new_sal:=currentsal.sal;8 update emp set sal=1.1*new_sal where current of salcur;9 end loop;10 commit;11 end;12/,循环游标,循环游标可以简化显式游标的处理代码,使用循环游标时,Oracle会隐含地打开游标、提取游标数据并关闭游标,语法如下:FOR record_name IN(corsor_

11、name(parameter,parameter.)|(query_difinition)LOOP statements END LOOP;,REF游标,隐式游标和显式游标都是静态定义的,当用户使用它们的时候查询语句已经确定。如果用户需要在运行的时候动态决定执行何种查询,可以使用REF游标和游标变量。创建REF 游标变量需要两个步骤:声明REF游标类型和声明REF游标类型的游标变量。用于声明REF游标语法如下:TYPEref_cursor_nameISREFCURSORRETURNreturn_type其中,RETURN 语句为可选子句,用于指定游标提取结果集的返回类型。包括RETURN 语句

12、表示是强类型REF 游标,不包括RETURN 语句表示是弱类型REF 游标,该方法可以获取任何结果集。,强类型游标,在PL/SQL代码段中可如下定义强类型游标:DeclareTyperefcur_tisrefcursor;Typeemp_refcur_tisrefcursorreturnemployee%rowtype;BeginNull;End;/,异常处理,异常(EXCEPTION)是PL/SQL 的标识符,当PL/SQL 块运行出现错误或警告时,则会触发异常。默认情况下,当发生异常时会终止PL/SQL 的执行,但通过引入异常处理部分,可以捕获各种异常,根据出现的异常情况进行相应的处理。O

13、racle 提供了预定义异常和用户定义异常两种类型。,预定义的异常,用户定义的异常,自定义异常处理是用户根据需要自己编写的异常处理程序,自定义异常处理由用户触发。自定义异常处理先定义,后触发,再处理。1定义异常处理 在 PL/SQL 程序块的 DECLARE 中定义异常处理。定义异常处理的格式如下:EXCEPTION;异常处理名是用户定义的,EXCEPTION 是异常处理关键字。2触发异常处理 在 PL/SQL 程序块的执行部分可能出现异常处,写触发语句捕获异常,触发异常处理的语句格式如下:RAISE;3处理异常 一个 PL/SQL 程序块中可以包含多个异常处理,根据不同的异常处理名来执行不同

14、的异常处理程序。在 PL/SQL 程序块的 EXCEPTION 中编写异常处理程序,定义异常处理程序的方法如下:,例6.16 下面看一个订单输入系统,当库存小于订单时抛出一个inventory_too_low异常。DECLAREinventory_too_low EXCEPTION;-其他声明语句BEGINIF order_rec.qtyinventory_rec.qty THENRAISE inventory_too_low;END IF.EXCEPTIONWHEN inventory_too_low THENorder_rec.staus:=backordered;replenish_in

15、ventory(inventory_nbr=inventory_rec.sku,min_amount=);END;,引发应用程序异常,RAISE_APPLICATION_ERROR创建用户定义的错误消息,用户定义的错误消息可以更详细地描述异常。引发应用程序错误地语法如下:RAISE_APPLICATION_ERROR(error_number,error_message);其中error_number表示用户为异常指定的编号,该编号介于-20000和20999之间的负整数。Error_message 表示用户为异常指定的消息文本。长度可达到2048个字节。错误消息是与error_number关

16、联的文本。RAISE_APPLICATION_ERROR可以在可执行部分和异常处理部分使用。在调用该过程时,同时显示错误编号和信息。,例6.17 当薪水为空时引发异常,将显示“工资异常”。SQLSET SERVEROUTPUT ONSQL DECLARE 2 sal_v emp.sal%type;3 sal_exception exception;4 BEGIN 5 SELECT NVL(sal,0)INTO sal_v FROM emp WHERE empno=7934;6 If sal_v=0 THEN 7 Raise sal_exception;8 ELSE 9 DBMS_OUTPUT.PUT_LINE(此员工薪水为:|sal_v);10 END IF;11 EXCEPTION12 WHEN sal_exception THEN13 RAISE_APPLICATION_ERROR(-20001,工资异常);14 END;/,小结,本章介绍了PL/SQL的基础语法以及如何使用PL/SQL语言设计和运行PL/SQL程序块,并将PL/SQL程序整合到Oracle服务器中。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号