package com.swift.jdbc_oracle;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException; import org.junit.After;
import org.junit.Before;
import org.junit.Test; import oracle.jdbc.OracleTypes;
import oracle.jdbc.driver.OracleCallableStatement; public class Oracle_jdbc { String driver = "oracle.jdbc.driver.OracleDriver";
String url = "jdbc:oracle:thin:@192.168.189.101:1521:orcl";
String username = "scott";
String password = "tiger";
Connection conn =null;
PreparedStatement statement = null;
ResultSet rs = null;
CallableStatement call = null;
OracleCallableStatement oraclecall = null; @Before
public void init() throws ClassNotFoundException, SQLException {
Class.forName(driver);
conn = DriverManager.getConnection(url,username,password);
} //普通查询
public void test() throws ClassNotFoundException, SQLException { String sql="select * from emp";
statement = conn.prepareStatement(sql);
rs = statement.executeQuery();
while(rs.next()) {
System.out.println(rs.getInt("empno")+"~"+rs.getString("ename")+"~"+rs.getString("sal")+"~"
+rs.getString("comm")+"~"+rs.getString("deptno"));
}
System.out.println("Test~~~~~~~~~");
}
//访问单返回值存储过程create or replace procedure getYearSal(eno in number,yearsal out number)
//{?= call <procedure-name>[(<arg1>,<arg2>, ...)]}
//sql语法格式 {call <procedure-name>[(<arg1>,<arg2>, ...)]}
public void procedure() throws SQLException {
String sql="{call getYearSal(?,?)}";
call = conn.prepareCall(sql);
//输入的和之前preparestatement一样
call.setInt(1, 7788);
//输出的要注册参数是什么类型
call.registerOutParameter(2,OracleTypes.NUMBER);
call.execute();
//要先查询存储过程再输出结果
double yearsal = call.getDouble(2);
System.out.println(yearsal); }
//访问游标返回值存储过程create or replace procedure getEmps(dno in number,emps out sys_refcursor) public void procedure2() throws SQLException {
String sql="{call getEmps(?,?)}";
call = conn.prepareCall(sql);
//输入的和之前preparestatement一样
call.setInt(1, 20);
//输出的要注册参数是什么类型
call.registerOutParameter(2,OracleTypes.CURSOR);
call.execute();
//要先查询存储过程再输出结果
Object o = call.getObject(2);
rs=(ResultSet)o;
while(rs.next()) {
System.out.println(rs.getInt("empno")+"~"+rs.getString("ename")+"~"+rs.getString("sal")+"~"
+rs.getString("comm")+"~"+rs.getString("deptno"));
}
}
//访问游标返回值存储过程(OracleCallableStatement)create or replace procedure getEmps(dno in number,emps out sys_refcursor) public void procedure3() throws SQLException {
String sql="{call getEmps(?,?)}";
oraclecall = (OracleCallableStatement) conn.prepareCall(sql);
//输入的和之前preparestatement一样
oraclecall.setInt(1, 20);
//输出的要注册参数是什么类型
oraclecall.registerOutParameter(2,OracleTypes.CURSOR);
oraclecall.execute();
//要先查询存储过程再输出结果
rs = oraclecall.getCursor(2);
while(rs.next()) {
System.out.println(rs.getInt("empno")+"~"+rs.getString("ename")+"~"+rs.getString("sal")+"~"
+rs.getString("comm")+"~"+rs.getString("deptno"));
}
}
//访问单返回值存储函数create or replace function x(eno in number) return number
//{?= call <procedure-name>[(<arg1>,<arg2>, ...)]} public void function() throws SQLException {
String sql="{?= call x(?)}";
call = conn.prepareCall(sql);
//输入的和之前preparestatement一样
call.setInt(2, 7788);
//输出的要注册参数是什么类型
call.registerOutParameter(1,OracleTypes.NUMBER);
call.execute();
//要先查询存储过程再输出结果
double yearsal = call.getDouble(1);
System.out.println(yearsal); }
//访问单返回值存储函数create or replace function x(eno in number) return number
//不用这个格式{?= call <procedure-name>[(<arg1>,<arg2>, ...)]}用存储函数select方法
@Test
public void function2() throws SQLException{
String sql="select x(7788) yearsal from dual";//不能多写一个; 写;会报无效字符异常
statement=conn.prepareStatement(sql);
rs= statement.executeQuery();
while(rs.next()) {
System.out.println(rs.getInt("yearsal"));
}
} @After
public void close() throws SQLException {
if(rs!=null) {
rs.close();
}
if(statement!=null) {
statement.close();
}
if(conn!=null) {
conn.close();
} } }

需要先把Oracle包倒到项目中ojdbc14-10.2.0.1.0.jar

Oracle 的jdbc方法的更多相关文章

  1. Java JDBC Thin Driver 连接 Oracle 三种方法说明(转载)

    一.JDBC 连接Oracle 说明 JDBC 的应用连接Oracle 遇到问题,错误如下: ORA-12505,TNS:listener does not currently know of SID ...

  2. Oracle使用JDBC进行增删改查 表是否存在

    Oracle使用JDBC进行增删改查 数据库和表 table USERS (   USERNAME VARCHAR2(20) not null,   PASSWORD VARCHAR2(20) ) a ...

  3. [转]oracle 11g jdbc jar包在哪个文件目录

    oracle 11g jdbc jar包在哪个文件目录 一. 如果装了Oracle数据库的话, 大致是这样的目录:     D:\oracle\product\11.2.0\client_1\oui\ ...

  4. oracle 11g jdbc jar包在哪个文件目录

    一. 如果装了oracle数据库的话, 大致是这样的目录:    D:\oracle\product\11.2.0\client_1\oui\jlib\classes12.jar 或者    D:\o ...

  5. maven项目无法导入Oracle的jdbc连接jar包【我】

    导入一个maven项目,启动一直报错 找不到Oracle的jdbc连接驱动Class, 用Eclipse导入 ojdbc14.jar 连接包,各种方法都无效,无法引入到部署后的lib目录中,可以直接放 ...

  6. IBM WebSphere MQ的oracle的jdbc

    一.IBM WebSphere MQ7.0的jdbc支持数据库有: DB2 Informix Informix_With_Date_Format Microsoft_SQL_Server Oracle ...

  7. oracle 表迁移方法 (二) 约束不失效

    DB:11.2.0.3.0 在oracle 表迁移方法 (一)中,只是move了一张普通的表,如果表的字段带有主键约束呢 ? [oracle@db01 ~]$ sqlplus / as sysdba ...

  8. 【转】PLSQL developer 连接不上64位Oracle 的解决方法

    PLSQL developer 连接不上64位Oracle 的解决方法 快乐无极 , 2012/06/13 10:10 , 开发文档 , 评论(6) , 阅读(140430) , Via 本站原创 大 ...

  9. 转:ORACLE的JDBC连接方式:OCI和THIN

    oracle的jdbc连接方式:oci和thin oci和thin是Oracle提供的两套Java访问Oracle数据库方式. thin是一种瘦客户端的连接方式,即采用这种连接方式不需要安装oracl ...

随机推荐

  1. js 中callback函数的定义和使用

    这是js里的解释了,其他语言的算我没说. 字面上理解下来就是,回调就是一个函数的调用过程.那么就从理解这个调用过程开始吧.函数a有一个参数,这个参数是个函数b,当函数a执行完以后执行函数b.那么这个过 ...

  2. 断路器hystrix

    分布式系统中不可避免的会出现一些故障,因为服务间错综复杂的依赖关系,有时候一个服务出现问题后,会导致依赖于它的服务出现远程调度的线程受阻,给服务造成压力,当然同样的,祖父级调用者(暂且这么叫吧)当然也 ...

  3. HDU 4364——Matrix operation——————【模拟题】

    Matrix operation Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  4. 【snmp】测试流程

    一.SNMP协议概述 SNMP是基于TCP/IP协议族的网络管理标准,是一种在IP网络中管理网络节点(如服务器.工作站.路由器.交换机等)的标准协议.SNMP能够使网络管理员提高网络管理效能,及时发现 ...

  5. Python常用模块一

    一. os模块 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname") 改变当前脚本工作目录:相当于shell下cd ...

  6. 关于webform textbox Password 模式

    textbox在这个模式时,如果进行点击按钮或者其他与后台交互的操作,则状态不会保留,既密码框内容会被清空: 这个可以在前台使用 隐藏控件加js获取密码框内容赋值到隐藏控件,点击刷新后通过后台为密码框 ...

  7. XtraReport三动态数据绑定

    代码还用上一节的,把Report的Datasource去掉.各个绑定的字段也去掉,有了第二节的基础,现在看这个就不难了,无非就是传到report一个数据集,在把这个数据集绑定到各控件里 清空detai ...

  8. Echarts学习笔记

    1.Ecahrts使用首先需要引用js文件 Echarts.js 然后定义一个带id的容器(div就可以) 然后就可以初始化echarts了 ↓这是柱形图 <h2 class="con ...

  9. DotNetty 跨平台的网络通信库(转)

    久以来,.Net开发人员都非常羡慕Java有Netty这样,高效,稳定又易用的网络通信基础框架.终于微软的Azure团队,使用C#实现的Netty的版本发布.不但使用了C#和.Net平台的技术特点,并 ...

  10. jsp smartupload学习

    smartupload 是jsp中用于上传文件的组件, 其特点如下: 1.使用简单.在JSP文件中仅仅书写三五行java代码就可以搞定文件的上传或下载,方便. 2.能全程控制上传.利用jspSmart ...