`

oracle与jdbc的结合

阅读更多


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();

	}

}

分享到:
评论

相关推荐

    Oracle-jdbc-12.2.0.1.zip

    Oracle JDBC驱动程序是Oracle公司提供的一种Java数据库连接(JDBC)接口,用于在Java应用程序中与Oracle数据库进行交互。在Oracle-jdbc-12.2.0.1.zip压缩包中,包含了Oracle JDBC驱动的特定版本,即12.2.0.1,这是...

    oracle的jdbc驱动包

    Oracle的JDBC驱动包是Java开发者与Oracle数据库交互的重要工具,它允许程序通过Java语言执行SQL语句,实现数据的存取、查询和更新。在Java应用程序中,JDBC(Java Database Connectivity)是一个标准接口,它由Sun ...

    oracle 9i jdbc驱动程序

    类型2驱动结合了Java和本地代码,利用Oracle的本地接口(如oci.dll或libclntsh.so),通过共享内存与数据库进行通信。这种方式通常提供更好的性能,但需要在客户端机器上安装Oracle客户端软件。 3. 类型3驱动...

    Oracle-jdbc-jar包

    Oracle JDBC驱动程序是Java开发者在进行数据库连接时不可或缺的组件,尤其在Web开发中,它提供了与Oracle数据库交互的能力。本文将深入探讨Oracle JDBC JAR包的使用、功能及其在Web开发中的应用。 首先,Oracle ...

    gt-jdbc-2.6.5.jar_oracle_jdbc_Geotools_

    总结来说,"gt-jdbc-2.6.5.jar_oracle_jdbc_Geotools_"是一个用于连接Oracle数据库并处理空间数据的JDBC驱动,它结合了Geotools的GIS功能和Oracle的数据库能力,使得开发者能够在ArcGIS环境中高效地管理和操作地理...

    最新Oracle_11g JDBC驱动包

    Oracle JDBC驱动包是用于Java应用程序与Oracle数据库之间通信的重要组件。它遵循Java Database Connectivity (JDBC) API标准,使得开发者可以使用Java语言高效地访问Oracle数据库。本文将深入探讨Oracle JDBC驱动的...

    oracle 11g jdbc驱动程序

    Oracle 11g JDBC驱动程序是Oracle公司提供的用于Java应用程序与Oracle数据库进行交互的软件组件。JDBC(Java Database Connectivity)是Java平台的标准接口,它允许Java程序通过编写Java代码来访问和处理各种类型的...

    oracle jdbc驱动 ojdbc14-10.2.0.4.0.jar工具

    Oracle JDBC驱动程序是连接Java应用程序与Oracle数据库的关键组件。ojdbc14-10.2.0.4.0.jar是Oracle公司发布的JDBC驱动版本之一,专为Oracle数据库10g版本设计。这个驱动包使得Java开发者能够利用Java Database ...

    oracle JDBC驱动程序

    Oracle JDBC驱动程序是Java应用程序与Oracle数据库之间通信的桥梁,使得开发者可以利用Java语言执行SQL语句和处理数据库数据。标题中的"10g与9i"指的是Oracle数据库的两个不同版本,即Oracle Database 10g和9i。这些...

    oracle jdbc diver package 正版

    Oracle JDBC Driver Package,简称为Oracle JDBC驱动包,是Oracle公司为Java开发者提供的用于与Oracle数据库进行交互的重要组件。这个正版的驱动包确保了开发者能够安全、高效地通过Java应用程序访问和操作Oracle...

    oracle database jdbc developer's guide and reference 10g release1(10/1) part no. B10979-02 June 2004

    - **简介**:结合了 JDBC-Thin 和 JDBC-OCI 的特点,使用 Java 调用 Oracle Net 服务,后者再调用本地的 OCI 库。 - **优点**:兼具了高性能和易部署的特点。 - **缺点**:配置相对复杂。 ### 三、使用 JDBC 连接 ...

    Oracle jdbc 单例 工具类

    Oracle JDBC工具类是一种常见的设计模式应用,用于简化与Oracle数据库的交互。在Java编程中,JDBC(Java Database Connectivity)是连接Java应用程序和各种数据库的标准接口。Oracle JDBC驱动程序是Oracle公司提供的...

    oracle的JDBC驱动程序

    Oracle的JDBC驱动程序是Java开发者连接到Oracle数据库的关键组件,它允许应用程序通过Java语言与Oracle数据库进行交互。Oracle提供了多种类型的JDBC驱动程序,包括类型1、2、3和4,每种都有其特定的功能特性和适用...

    Java Programming with Oracle JDBC

    ### Java编程与Oracle JDBC知识点概览 #### 一、引言 本书《Java Programming with Oracle JDBC》由Donald Bales编写,出版社为O'Reilly,首次出版于2002年1月,共有496页,ISBN号为0-596-00088-x。本书旨在教授...

    oracle-jdbc分页实现(只需传入sql语句即可实现分页)

    Oracle JDBC分页实现是数据库操作中的一个重要环节,尤其是在处理大量数据时,为了提高用户体验和系统性能,分页查询显得尤为重要。Oracle数据库提供了多种方法来实现分页查询,其中包括使用ROWNUM伪列、游标...

    Java用JDBC实现对Oracle数据库操作

    9. **Quartz Job与Oracle结合**:`quartz_job.xml`可能定义了Quartz作业,这些作业可能涉及到与Oracle数据库的交互,例如定时备份、数据清理或报告生成。 10. **GFMIS(可能是一个项目名称)**:GFMIS可能是一个...

    高性能 Oracle JDBC 编程

    ### 高性能Oracle JDBC编程详解 #### 一、引言 在现代企业级应用中,数据库性能是系统响应速度和用户满意度的关键因素之一。Oracle作为全球领先的数据库管理系统,其高效性和稳定性得到了广泛认可。为了充分利用...

    jdbc+dao:连接oracle

    2. **JDBC驱动**:Oracle提供了一个名为"ojdbc"的驱动程序,例如`ojdbc6.jar`或`ojdbc8.jar`,这个驱动使得Java程序能够与Oracle数据库进行通信。你需要将对应的JDBC驱动添加到你的项目类路径中,这样Java程序才能...

    JDBC驱动(Oracle、MySql)

    Java Database Connectivity (JDBC) 是Java编程语言中用于与各种数据库进行交互的一组标准API。...无论是Oracle还是MySQL,选择合适的JDBC驱动,结合Java强大的面向对象特性,可以构建出稳定、高效的数据库应用程序。

    SSH+ORACLE_jdbc+MYSQL_jdbc+MD的所有jar包

    Oracle_jdbc和MYSQL_jdbc则分别对应的是Oracle数据库和MySQL数据库的Java驱动,用于在Java程序中与数据库进行交互。MD可能指的是MD5,一种广泛使用的哈希函数,常用于密码存储或数据校验。 1. **Spring**:Spring是...

Global site tag (gtag.js) - Google Analytics