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 840704 一些补充 1、存储过程的参数 in:输入参数, ... -
plsql包、触发器和大对象操作
2012-07-05 14:32 1855703 ------------------------- ... -
plsql存储过程、函数
2012-07-05 14:30 6110629 ------------------------- ... -
sql trace与执行计划
2012-07-04 17:32 1900627 ----执行计划 oracle在执行一个SQL之前 ... -
plsql高级操作
2012-07-04 17:31 1275627 ---group by 子句的增强 --roll ... -
plsql权限、数据连接和集合操作
2012-07-04 17:30 1368627 ---控制用户权限 Oracle的权限主要包括角色 ... -
plsql查询和数据对象
2012-07-04 17:01 3674626 ---多表查询 --Oracle ... -
plsql简单操作
2012-07-04 16:59 2916626 1、pl/sql --NULL表示不可用、未赋值、不 ... -
oracle 触发器、视图、自定义类型和数组
2012-06-13 22:11 31711:视图(view) 视图的作用: A:控制数据访问 ... -
oracle 存储过程和函数、程序包
2012-06-13 22:07 15491:存储过程 什么是存 ... -
oracle 游标管理
2012-06-13 22:04 882游标: 游标:逐行处理查询结果,以编程的方式访问数据。 游 ... -
oracle pl/sql编程
2012-06-13 22:01 9801:什么是PL/SQL 编程式的SQL语句 2:PL/SQ ... -
oracle单表查询与多表查询
2012-06-11 19:21 6159一、单表查询 1 基本查询 查询格式: ... -
oracle DDL、DML与TCL
2012-06-11 19:07 1444一、DDL 1、建表 建表语 ... -
oracle基础
2012-06-10 12:40 9741 oracle数据库基础 Oracle数据库简介 ...
相关推荐
主要介绍了Java使用Jdbc连接Oracle执行简单查询操作,结合实例形式详细分析了java基于jdbc实现Oracle数据库的连接与查询相关操作技巧,需要的朋友可以参考下
主要介绍了jdbc连接oracle数据库功能,结合实例形式详细分析了java基于jdbc连接Oracle数据库的具体操作步骤与相关实现技巧,需要的朋友可以参考下
酒店预订系统。运用了jsp+servlet+Oracle技术,结合html+css+js.zip
本课程提供专业的数据库培训,深入解析Oracle和MySQL这两大主流关系型数据库管理...同时,结合数据库理论与Java编程实践,学员能够在开发过程中高效地集成和操作数据库,从而在软件开发和数据管理领域迈出坚实的一步。
帮你实现微软的sql server的jdbc连接,有了...同时,将Java语言和JDBC结合起来使程序员不必为不同的平台编写不同的应用程序,只须写一遍程序就可以让它在任何平台上运行,这也是Java语言“编写一次,处处运行”的优势。
8.3.3 JSP文档与XML的结合 8.4 用XML和XSL生成动态页面 8.4.1 建立标准的数据格式 8.4.2 生成动态XML 8.4.3 用XSL作为模板语言 8.4.4 生成HTML 8.5 从XML到Java代码的数据绑定 8.5.1 访问方式选择 8.5.2 ...
关于oracle 的分页、翻页的java源代码,结合JDBC连接数据库实现,比较基础的JDBC结合swing图形框架实现,适合Java初学者使用
主要介绍了Java使用JDBC实现Oracle用户认证的方法,结合实例形式分析了java使用jdbc实现数据库连接、建表、添加用户、用户认证等操作流程与相关注意事项,需要的朋友可以参考下
基于spring jdbc的上层封装,底层jdbc操作基于JdbcTemplate,支持MySql、SqlServer、Oracle数据库,强弱类型完美结合 1、mini-jdbc:针对spring jdbc的一些不方便的地方,做了一些封装,大小写不敏感,简化了日常的...
Oracle数据库系统是应用最广泛的数据平台,使用Java和Oracle相结合开发网络应用程序,可以使应用程序具有二者的优点,高效而安全地运行。随着硬件价格的下降和数据应用的增加,数据库逐渐成为所有数据的中心存储仓库...
本资源为个人结合网上资料,试验成功。 Oracle后台存储过程中调用Java代码块,以此来访问异构数据库数据(DB2)。 此方式适用场景: 原有业务逻辑均在后台实现,现要加入对异构数据库的数据访问或写入。 异构数据库...
使用JSP访问Oracle数据库,使用JDBC访问数据库,JDBC-ODBC桥作为JDBC API访问具体数据库的中间环节,是使用JSP访问数据库...访问Oracle 10g的实例来讲解如何在JSP中使用JDBC-ODBC桥结合ODBC驱动程序的机制来访问数据库。
数据库设计最后要考虑的是与要选择的开发软件之间的接口问题,要准备好接口程序,有 些是第三方软件已经备好的,有些是数据库本身要具备的,如jdbc,bde,ado,等与数据库的接口,主要是考虑接口的可用性、效率问题。...
JDBC是一种将Java语言和Sql结合的一个很好的编程接口。它提供了通用的SQL数据库访问和存储结构。JDBC支持基本SQL功能的一个通用低层的应用程序编程接口,在不同的数据库功能模块上提供了一个统一的用户界面。JDBC...
作者通过总结各自多年的软件开发和教学培训经验,与大家分享了掌握Oracle SQL所独有的丰富功能的技巧所在,内容涵盖SQL执行、联结、集合、分析函数、子句、事务处理等多个方面。读者可以学习到以下几个方面的技巧:...
ORACLE 和 DB2 存在的一些差异,列举了几种移植方案,结合作者参与的项目,对基干 MTK 的移植方案:MTK 移植工具的应用和两个数据库系统中不兼容的数据库对象的移植策略做了进一步的探讨与应用。 一、数据库移植的...
主要介绍了Java JDBC连接数据库常见操作,结合实例形式总结分析了java基于jdbc连接mysql、Oracle数据库及连接池相关操作技巧,需要的朋友可以参考下
主要介绍了java实现的连接oracle/mysql数据库功能,结合实例形式分析了java基于jdbc连接Oracle与mysql的相关操作技巧,并附带完整实例代码与oracle+mysql数据库驱动包供读者下载参考,需要的朋友可以参考下
数据分析与报表:与数据仓库技术结合,支持OLAP(在线分析处理)和数据可视化。 移动应用与物联网(IoT):作为数据存储层,支撑大量设备的数据采集、存储和查询需求。 嵌入式系统:在资源有限的环境中,作为轻量...