利用JDBC进行Oracle访问

上传人:lisu****2020 文档编号:246667402 上传时间:2024-10-15 格式:PPT 页数:29 大小:337.50KB
返回 下载 相关 举报
利用JDBC进行Oracle访问_第1页
第1页 / 共29页
利用JDBC进行Oracle访问_第2页
第2页 / 共29页
利用JDBC进行Oracle访问_第3页
第3页 / 共29页
点击查看更多>>
资源描述
ACCP V4.0,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,*,ACCP V4.0,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,*,课程目标,掌握基本的数据库配置和管理,熟练掌握,SQL,命令和,SQL,函数,理解,Oracle,数据库体系结构,使用,Oracle,的各种数据库对象,使用,PL/SQL,编写存储过程,使用,PL/SQL,编写触发器,掌握基本的,Oracle,数据库管理,2,第十一章 利用,JDBC,进行,Oracle,访问,目标,4,概述,JDBC(Java Database Connectivity),对,ODBC API,面向对象的封装和重新设计,使它易于学习和使用,而且能够编写不依赖厂商的代码,用以查询和操纵数据库。与所有,Java API,一样,它是面向对象的,但并不是很高级别的对象集,.JDBC,可以访问包括,Oracle,在内的各种不同数据库,但,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,的管理层,作用于用户和驱动程序之间。它跟踪可用的驱动程序,并在数据库和相应驱动程序之间建立连接。另外,,DriverManager,类也处理诸如驱动程序登录时间限制及登录和跟踪消息的显示等事务。,DriverManager.registerDriver(new();,8,打开数据流,DriverManager.getConnection(URL,username,password);,JDBC URL,的标准语法如下所示。它由三部分组成,各部分间用冒号分隔:,jdbc:,JDBC URL,的三个部分可分解如下:,jdbc,协议。,JDBC URL,中的协议总是,jdbc,。子协议即将使用的驱动程序,子名称是,oracle,数据库服务名。,Username,程序连接数据库时使用的数据库用户名。,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(,字段脚标或字段名,),;,关闭数据流,关闭数据流连接是采用,Connection,对象的,close,方法。即时关闭数据流可以减少内存占用。语句如下:,con.close();,12,在,JDBC,中调用存储过程,CallableStatement对象为所有的 DBMS 提供了一种以标准形式调用存储过程的方法。有两种调用形式:一种形式带结果参数,另一种形式不带结果参数。,在 JDBC 中调用存储过程的语法如下所示。注意,方括号表示其间的内容是可选项;方括号本身并非语法的组成部份。,call 过程名(?,?,.),返回结果参数的存储过程的语法为:,?=call 过程名(?,?,.),不带参数的存储过程的语法类似:,call 过程名,创建,CallableStatement,对象,CallableStatement,象是用,Connection,方法,prepareCall,创建的。下例创建,CallableStatement,的实例,其中含有对存储过程,getEMPData,调用。该过程有两个变量,但不含结果参数:,CallableStatement cstmt =con.prepareCall(call getEMPData(?,?);,其中,?,占位符为,IN,、,OUT,还是,INOUT,参数,取决于存储过程,getEMPData,。,14,IN,和,OUT,参数,将,IN,参数传给,CallableStatement,对象是通过,setXXX,方法完成的。所传入参数的类型决定了所用的,setXXX,方法(例如,用,setFloat,来传入,float,值等)。,如果存储过程返回,OUT,参数,则在执行,CallableStatement,对象以前先注册每个,OUT,参数的,JDBC,类型,使用,registerOutParameter,方法来注册。语句执行完后,,CallableStatement,的,getXXX,方法将取回参数值。,registerOutParameter,使用的是,JDBC,类型(因此它与数据库返回的,JDBC,类型匹配),而,getXXX,将之转换为,Java,类型。,既支持输入又接受输出的参数(,INOUT,参数)既要调用,registerOutParameter,方法,还要调用合适的,setXXX,方法。,setXXX,方法将参数设置为输入参数,,registerOutParameter,方法将它的,JDBC,类型注册为输出参数。应该引起注意的是,,IN,值的,JDBC,类型和提供给,registerOutParameter,方法的,JDBC,类型必须相同。,INOUT,参数,INOUT,参数,检索输出值时,使用对应的,getXXX,方法。例如,,Java,类型为,int,的参数应该使用方法,setInt,来赋输入值。应该给,registerOutParameter,提供类型为,INTEGER,的,JDBC,类型。,处理SQL异常,类定义了四个方法,可以帮助查找判断出错原因。,getErrorCode(),getMessage(),getSQLState(),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 where 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_name(parameter,parameter.),|(query_difinition),LOOP,statements,END LOOP;,REF,游标,隐式游标和显式游标都是静态定义的,当用户使用它们的时候查询语句已经确定。如果用户需要在运行的时候动态决定执行何种查询,可以使用,REF,游标和游标变量。,创建,REF,游标变量需要两个步骤:声明,REF,游标类型和声明,REF,游标类型的游标变量。用于声明,REF,游标语法如下:,TYPEref_cursor_nameISREFCURSORRETURNreturn_type,其中,,RETURN,语句为可选子句,用于指定游标提取结果集的返回类型。包括,RETURN,语句表示是强类型,REF,游标,不包括,RETURN,语句表示是弱类型,REF,游标,该方法可以获取任何结果集。,强类型游标,在,PL/SQL,代码段中可如下定义强类型游标:,Declare,Typerefcur_tisrefcursor;,Typeemp_refcur_tisrefcursorreturnemployee%rowtype;,Begin,Null;,End;,/,异常处理,异常(EXCEPTION)是PL/SQL 的标识符,当PL/SQL 块运行出现错误或警告时,则会触发异常。默认情况下,当发生异常时会终止PL/SQL 的执行,但通过引入异常处理部分,可以捕获各种异常,根据出现的异常情况进行相应的处理。,Oracle 提供了预定义异常和用户定义异常两种类型。,预定义的异常,预定义异常名,描 述,ACCESS_INTO_NULL,试图给一个没有初始化的对象赋值,CURSOR_ALREADY_OPEN,试图打开一个已经打开的游标,DUP_VAL_ON_INDEX,试图在一个有惟一性约束的字段中存储重复的值,NVALID_CURSOR,试图执行一个无效的游标,LOGIN_DENIED,用一个无效的用户名或口令登录,NO_DATA_FOUND,查询语句没有返回数据,NOT_LOGGED_ON,连接数据库失败,SUBSCRIPT_OUTSIDE_LIMIT,表或数组类型变量中索引值超出系统范围,SUBSCRIPT_BEYOND_COUNT,表或数组类型变量中索引值超出系统范围,TOO_MANY_ROWS,查询语句返回多行数据,VALUE_ERROR,变量转换时形成无效值,ZERO_DIVIDE,被零除,用户定义的异常,自定义异常处理是用户根据需要自己编写的异常处理程序,自定义异常处理由用户触发。自定义异常处理先定义,后触发,再处理。,1,定义异常处理,在,PL/SQL,程序块的,DECLARE,中定义异常处理。定义异常处理的格式如下:,EXCEPTION;,异常处理名是用户定义的,,EXCEPTION,是异常处理关键字。,2,触发异常处理,在,PL/SQL,程序块的执行部分可能出现异常处,写触发语句捕获异常,触发异常处理的语句格式如下:,RAISE;,3,处理异常,一个,PL/SQL,程序块中可以包含多个异常处理,根据不同的异常处理名来执行不同的异常处理程序。在,PL/SQL,程序块的,EXCEPTION,中编写异常处理程序,定义异常处理程序的方法如下:,例,6.16,下面看一个订单输入系统,当库存小于订单时抛出一个,inventory_too_low,异常。,DECLARE,inventory_too_lo
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


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

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


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