import java.sql.Connection; import java.sql.SQLException; import java.sql.Statement; public class JDBC_Batch_Test { /** * @param args */ public static void main(String[] args) { // JDBC批处理 执行批量语句 // 插入emp dept Connection connection = OracleConnection.getConnection(); Statement statement = null; String sqlDept = "insert into dept values(55,'批处理部门','福建')"; String sqlEMP = "insert into emp(empno,ename,sal,deptno) values(8001,'JDBC',5000,55)"; try { // /设置自动提交为false connection.setAutoCommit(false); statement = connection.createStatement(); statement.addBatch(sqlDept); statement.addBatch(sqlEMP); statement.executeBatch(); connection.commit(); connection.setAutoCommit(true); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); // 出现异常需要回滚数据 try { connection.rollback(); } catch (SQLException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } finally { try { statement.close(); connection.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } System.out.println("OK"); } }
callableStatement.setint(1,值)//参数位置
callableStatement.setint("参数名",值);//参数名为定义的形参名字
注意过程调用中的参数命名表示法
位置、名称、混合(当出现名称时后面剩下的只能是名称表示)
但是JDBC中只能是位置或者名称
通过参数名称设置值,只能通过参数名称获得值
callableStatement.setInt("empno_p", 8888);
// out类型的参数
callableStatement.registerOutParameter("ename_p", Types.VARCHAR);
callableStatement.registerOutParameter("sal_p", Types.INTEGER);
boolean ex = callableStatement.execute();
System.out.println("ex=" + ex);
// if(callableStatement.execute()){
String ename = callableStatement.getString("ename_p");
int sal = callableStatement.getInt("sal_p");
同理:通过位置设置参数,只能通过位置获得对应out参数的值
import java.sql.CallableStatement; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Types; import oracle.jdbc.OracleTypes; public class TestCallStatement { static void noReturnValue() { // create or replace procedure add_dept(id_p number, dname_p // varchar2,loc_p varchar2) is // begin // --不会受父事务的影响 // insert into dept values(id_p,dname_p,loc_p); // commit;--进行自主提交业务 // dbms_output.put_line('过程提交完成...'); // end add_dept; Connection connection = OracleConnection.getConnection(); CallableStatement callableStatement = null; try { callableStatement = connection .prepareCall("{call add_dept(?,?,?)}"); // 位置 // callableStatement.setInt(1, 56); // callableStatement.setString(2, "JDBC过程插入"); // callableStatement.setString(3, "福州"); // 名称 callableStatement.setInt("id_p", 57); callableStatement.setString("dname_p", "JDBC过程插入57"); callableStatement.setString("loc_p", "福州57"); callableStatement.executeUpdate(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { try { callableStatement.close(); connection.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } System.out.println("OK"); } static void haveReturnValue_notList() { // create or replace procedure out_pro(empno_p in number, // ename_p out varchar2, // sal_p out number) is // begin // select ename, sal into ename_p, sal_p from emp where empno = empno_p; // exception // when NO_DATA_FOUND then // ename_p := 'NULL'; // sal_p := -1; // end out_pro; Connection connection = OracleConnection.getConnection(); CallableStatement callableStatement = null; try { callableStatement = connection.prepareCall("{call out_pro(?,?,?)}"); callableStatement.setInt(1, 8888); callableStatement.registerOutParameter(2, Types.VARCHAR); callableStatement.registerOutParameter(3, Types.INTEGER); callableStatement.execute(); String ename = callableStatement.getString(2); int sal = callableStatement.getInt(3); System.out.println("ename=" + ename); System.out.println("sal=" + sal); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { try { callableStatement.close(); connection.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } System.out.println("OK"); } static void haveReturnValue_isList() { // 包头 // create or replace package test_pack is // --定义公共变量 // type dept_cursor is REF CURSOR ; // procedure dept_proc(p_dept_cursor out dept_cursor); // function emp_function return varchar2; // function order_fun return varchar2; // end test_pack; // 包体 // create or replace package body test_pack is // --不需要重复定义游标 // --注意过程out类型的游标参数 // procedure dept_proc(p_dept_cursor out dept_cursor) is // begin // open p_dept_cursor for // select * from dept; // end dept_proc; // end test_pack; Connection connection = OracleConnection.getConnection(); CallableStatement callableStatement = null; ResultSet resultSet = null; try { callableStatement = connection .prepareCall("{call test_pack.dept_proc(?)}"); // oracle.jdbc.OracleTypes.CURSOR callableStatement.registerOutParameter(1, OracleTypes.CURSOR); callableStatement.execute(); resultSet = (ResultSet) callableStatement.getObject(1); while (resultSet.next()) { System.out.println(resultSet.getInt(1) + "-" + resultSet.getString(2) + "-" + resultSet.getString("loc")); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { try { callableStatement.close(); connection.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } System.out.println("OK"); } /** * @param args */ public static void main(String[] args) { // noReturnValue(); // haveReturnValue_notList(); haveReturnValue_isList(); } }
发表评论
-
plsql一些补充
2012-07-05 14:33 875704 一些补充 1、存储过程的参数 in:输入参数, ... -
plsql包、触发器和大对象操作
2012-07-05 14:32 1887703 ------------------------- ... -
plsql存储过程、函数
2012-07-05 14:30 6147629 ------------------------- ... -
sql trace与执行计划
2012-07-04 17:32 1932627 ----执行计划 oracle在执行一个SQL之前 ... -
plsql高级操作
2012-07-04 17:31 1325627 ---group by 子句的增强 --roll ... -
plsql权限、数据连接和集合操作
2012-07-04 17:30 1423627 ---控制用户权限 Oracle的权限主要包括角色 ... -
plsql查询和数据对象
2012-07-04 17:01 3710626 ---多表查询 --Oracle ... -
plsql简单操作
2012-07-04 16:59 2946626 1、pl/sql --NULL表示不可用、未赋值、不 ... -
oracle 触发器、视图、自定义类型和数组
2012-06-13 22:11 32121:视图(view) 视图的作用: A:控制数据访问 ... -
oracle 存储过程和函数、程序包
2012-06-13 22:07 15851:存储过程 什么是存 ... -
oracle 游标管理
2012-06-13 22:04 915游标: 游标:逐行处理查询结果,以编程的方式访问数据。 游 ... -
oracle pl/sql编程
2012-06-13 22:01 10011:什么是PL/SQL 编程式的SQL语句 2:PL/SQ ... -
oracle单表查询与多表查询
2012-06-11 19:21 6206一、单表查询 1 基本查询 查询格式: ... -
oracle DDL、DML与TCL
2012-06-11 19:07 1492一、DDL 1、建表 建表语 ... -
oracle基础
2012-06-10 12:40 10081 oracle数据库基础 Oracle数据库简介 ...
相关推荐
Oracle JDBC驱动程序是Oracle公司提供的一种Java数据库连接(JDBC)接口,用于在Java应用程序中与Oracle数据库进行交互。在Oracle-jdbc-12.2.0.1.zip压缩包中,包含了Oracle JDBC驱动的特定版本,即12.2.0.1,这是...
Oracle的JDBC驱动包是Java开发者与Oracle数据库交互的重要工具,它允许程序通过Java语言执行SQL语句,实现数据的存取、查询和更新。在Java应用程序中,JDBC(Java Database Connectivity)是一个标准接口,它由Sun ...
类型2驱动结合了Java和本地代码,利用Oracle的本地接口(如oci.dll或libclntsh.so),通过共享内存与数据库进行通信。这种方式通常提供更好的性能,但需要在客户端机器上安装Oracle客户端软件。 3. 类型3驱动...
Oracle JDBC驱动程序是Java开发者在进行数据库连接时不可或缺的组件,尤其在Web开发中,它提供了与Oracle数据库交互的能力。本文将深入探讨Oracle JDBC JAR包的使用、功能及其在Web开发中的应用。 首先,Oracle ...
总结来说,"gt-jdbc-2.6.5.jar_oracle_jdbc_Geotools_"是一个用于连接Oracle数据库并处理空间数据的JDBC驱动,它结合了Geotools的GIS功能和Oracle的数据库能力,使得开发者能够在ArcGIS环境中高效地管理和操作地理...
Oracle JDBC驱动包是用于Java应用程序与Oracle数据库之间通信的重要组件。它遵循Java Database Connectivity (JDBC) API标准,使得开发者可以使用Java语言高效地访问Oracle数据库。本文将深入探讨Oracle JDBC驱动的...
Oracle 11g JDBC驱动程序是Oracle公司提供的用于Java应用程序与Oracle数据库进行交互的软件组件。JDBC(Java Database Connectivity)是Java平台的标准接口,它允许Java程序通过编写Java代码来访问和处理各种类型的...
Oracle JDBC驱动程序是连接Java应用程序与Oracle数据库的关键组件。ojdbc14-10.2.0.4.0.jar是Oracle公司发布的JDBC驱动版本之一,专为Oracle数据库10g版本设计。这个驱动包使得Java开发者能够利用Java Database ...
Oracle JDBC驱动程序是Java应用程序与Oracle数据库之间通信的桥梁,使得开发者可以利用Java语言执行SQL语句和处理数据库数据。标题中的"10g与9i"指的是Oracle数据库的两个不同版本,即Oracle Database 10g和9i。这些...
Oracle JDBC Driver Package,简称为Oracle JDBC驱动包,是Oracle公司为Java开发者提供的用于与Oracle数据库进行交互的重要组件。这个正版的驱动包确保了开发者能够安全、高效地通过Java应用程序访问和操作Oracle...
- **简介**:结合了 JDBC-Thin 和 JDBC-OCI 的特点,使用 Java 调用 Oracle Net 服务,后者再调用本地的 OCI 库。 - **优点**:兼具了高性能和易部署的特点。 - **缺点**:配置相对复杂。 ### 三、使用 JDBC 连接 ...
Oracle JDBC工具类是一种常见的设计模式应用,用于简化与Oracle数据库的交互。在Java编程中,JDBC(Java Database Connectivity)是连接Java应用程序和各种数据库的标准接口。Oracle JDBC驱动程序是Oracle公司提供的...
Oracle的JDBC驱动程序是Java开发者连接到Oracle数据库的关键组件,它允许应用程序通过Java语言与Oracle数据库进行交互。Oracle提供了多种类型的JDBC驱动程序,包括类型1、2、3和4,每种都有其特定的功能特性和适用...
### Java编程与Oracle JDBC知识点概览 #### 一、引言 本书《Java Programming with Oracle JDBC》由Donald Bales编写,出版社为O'Reilly,首次出版于2002年1月,共有496页,ISBN号为0-596-00088-x。本书旨在教授...
Oracle JDBC分页实现是数据库操作中的一个重要环节,尤其是在处理大量数据时,为了提高用户体验和系统性能,分页查询显得尤为重要。Oracle数据库提供了多种方法来实现分页查询,其中包括使用ROWNUM伪列、游标...
9. **Quartz Job与Oracle结合**:`quartz_job.xml`可能定义了Quartz作业,这些作业可能涉及到与Oracle数据库的交互,例如定时备份、数据清理或报告生成。 10. **GFMIS(可能是一个项目名称)**:GFMIS可能是一个...
### 高性能Oracle JDBC编程详解 #### 一、引言 在现代企业级应用中,数据库性能是系统响应速度和用户满意度的关键因素之一。Oracle作为全球领先的数据库管理系统,其高效性和稳定性得到了广泛认可。为了充分利用...
2. **JDBC驱动**:Oracle提供了一个名为"ojdbc"的驱动程序,例如`ojdbc6.jar`或`ojdbc8.jar`,这个驱动使得Java程序能够与Oracle数据库进行通信。你需要将对应的JDBC驱动添加到你的项目类路径中,这样Java程序才能...
Java Database Connectivity (JDBC) 是Java编程语言中用于与各种数据库进行交互的一组标准API。...无论是Oracle还是MySQL,选择合适的JDBC驱动,结合Java强大的面向对象特性,可以构建出稳定、高效的数据库应用程序。
Oracle_jdbc和MYSQL_jdbc则分别对应的是Oracle数据库和MySQL数据库的Java驱动,用于在Java程序中与数据库进行交互。MD可能指的是MD5,一种广泛使用的哈希函数,常用于密码存储或数据校验。 1. **Spring**:Spring是...