import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet; import oracle.jdbc.OracleTypes;
import oracle.jdbc.oracore.OracleType; public class Test
{
static void 简单的查询()
{
String sql="select * from emp where deptno=?";
String[] paras={10+""};
ResultSet rs=JDBCUtil.doQuery(sql, paras);
try
{
while (rs.next())
{
int empno = rs.getInt("empno");
String ename = rs.getString("ename");
System.out.println(empno + "--" + ename);
}
}
catch (Exception e)
{
System.out.println("查询异常!");
}
finally
{
JDBCUtil.close(rs);
}
}
static void 简单的修改()
{
String sql="update emp set empno=? where ename=?";
int result=JDBCUtil.doUpdate(sql, new String[]{"7369","老白"});
if(result!=1)
{
System.out.println("修改失败!");
}
else
System.out.println("修改成功!影响行数为:"+result);
}
static void 调用无参存储过程()
{
//获取链接
Connection con=JDBCUtil.getConnection();
//执行存储过程
String sql="{call system.update_emp_comm()}";
int result=0;
try
{
CallableStatement cmt = con.prepareCall(sql);
result = cmt.executeUpdate();
}
catch (Exception e)
{
e.printStackTrace();
System.out.println("执行过程出现异常!");
return;
}
System.out.println("执行完毕!影响行数为:"+result);
}
static void 调用有入参出参存储过程()
{
//1 获取连接
Connection con = JDBCUtil.getConnection();
//2 执行存储过程
String sql = "{call update_emp_sal_by_deptno(?,?,?)}";
int result = 0;
try
{
CallableStatement cmt = con.prepareCall(sql);
cmt.setInt(1, 30);
cmt.setInt(2, 2000);
//将第3个参数注册出参
cmt.registerOutParameter(3, OracleType.STYLE_INT);
result = cmt.executeUpdate();
//获取第3个参数,也就是出参,执行完毕后的值
int rowcount = cmt.getInt(3);
System.out.println("影响了" + rowcount + "条!");
}
catch (Exception e)
{
e.printStackTrace();
System.out.println("执行过程出现异常!");
return;
}
System.out.println("执行完毕,影响行数为:"+result);
}
static void 调用有入参的函数()
{
//1 获取连接
Connection con = JDBCUtil.getConnection();
//2 执行函数
String sql ="{? = call delete_emp_by_empname(?)}";
int result = 0;
try
{
CallableStatement cmt = con.prepareCall(sql);
//将函数的返回值,当成出参来注册
cmt.registerOutParameter(1, OracleType.STYLE_INT);
cmt.setString(2, "白");
result = cmt.executeUpdate();
//获取第3个参数,也就是出参,执行完毕后的值
int rowcount = cmt.getInt(1);
System.out.println("删除了" + rowcount + "条!");
}
catch (Exception e)
{
e.printStackTrace();
System.out.println("执行过程出现异常!");
return;
}
System.out.println(result);
System.out.println("执行完毕!");
}
static void 调用有返回游标的函数()
{
//1 获取连接
Connection con = JDBCUtil.getConnection();
//2 执行函数
String sql ="{?=call get_max_min_sal_by_group()}";
int result = 0;
ResultSet rs = null;
try {
CallableStatement cmt = con.prepareCall(sql);
//将函数的返回值,当成出参来注册
cmt.registerOutParameter(1, OracleTypes.CURSOR);
result = cmt.executeUpdate();
//获取第1个参数,也就是返回值,即游标,即resultset
rs = (ResultSet) cmt.getObject(1);
while (rs.next()) {
int deptno = rs.getInt("部门号");
float max_sal = rs.getFloat("最高工资");
float min_sal = rs.getFloat("最低工资");
System.out.println(deptno + ",最高工资" + max_sal + ",最低工资"
+ min_sal);
}
}
catch (Exception e)
{
e.printStackTrace();
System.out.println("执行过程出现异常!");
return;
}
finally
{
JDBCUtil.close(rs); //关闭游标
}
System.out.println(result);
System.out.println("执行完毕!");
}
public static void testProcedure()
{
String sql="{call queryEmpInfo(?,?,?,?)}";
Connection conn=null;
CallableStatement call=null;
try
{
conn = JDBCUtil.getConnection();
call = conn.prepareCall(sql);
//赋值
call.setInt(1, 7839);
//对于out参数,申明
call.registerOutParameter(2, OracleTypes.VARCHAR);
call.registerOutParameter(3, OracleTypes.NUMBER);
call.registerOutParameter(4, OracleTypes.VARCHAR);
//调用
call.execute();
//取出结果
String name = call.getNString(2);
double sal = call.getDouble(3);
String job = call.getString(4);
System.out.println(name);
System.out.println(sal);
System.out.println(job);
}
catch (Exception e)
{
e.printStackTrace();
}
}
public static void testFunction()
{
String sql = "{?=call queryEmpIncome(?)}";
Connection conn = null;
CallableStatement call = null;
try
{conn = JDBCUtil.getConnection();
call = conn.prepareCall(sql);
call.registerOutParameter(1, OracleTypes.NUMBER);
call.setInt(2, 7839);
//执行  
call.execute();
//取出年收入  
double income = call.getDouble(1);
System.out.println(income);
}
catch (Exception e)
{
e.printStackTrace();
}
}
public static void main(String[] args)
{
//简单的查询();
//简单的修改();
//调用无参存储过程();
//调用有入参出参存储过程();
//调用有入参的函数();
//调用有返回游标的函数();
//testProcedure();
testFunction();
} }

  

oracle---jdbctest--laobai的更多相关文章

  1. oracle:jdbcTest

    JDBC连接数据库 •创建一个以JDBC连接数据库的程序,包含7个步骤: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), 这通过java.l ...

  2. jdbc连接oracle数据库

    /*** 通过改变配置文件来连接不同数据库*/package com.xykj.jdbc; import static org.junit.Assert.*; import java.io.Input ...

  3. JDBC链接oracle已经mysql的测试

    1.链接oracle package cn.itcast.mybatis.dao; import java.sql.Connection;import java.sql.DriverManager;i ...

  4. 1、原生jdbc连接oracle数据库简单介绍

    一.jbdc的常用API1.Connection:数据库的链接对象2.statement:数据库sql执行对象3.preparedStatment:sql的预编译处理对象,是statement子接口4 ...

  5. 基于oracle数据库存储过程的创建及调用

    1.PLSQL编程 1.1概念和目的 PL/SQL(Procedure Language/SQL) PLSQL是Oracle对sql语言的过程化扩展 指在SQL命令语言中增加了过程处理语句(如分支.循 ...

  6. oracle入门(二)

    ### 一,视图 ```1. 什么是视图    视图是一张虚表, 可以把视图看成表使用(增删改查),视图中没有数据,所有的数据都在基本表中(tables)    封装了一个复杂的DQL    操作视图 ...

  7. Java连接Oracle数据库的三种连接方式

    背景: 这两天在学习Oracle数据库,这里就总结下自己上课所学的知识,同时记录下来,方便整理当天所学下的知识,也同时方便日后自己查询. SQL语句的话,这里我就不多讲了,感觉和其他的数据库(MySQ ...

  8. Java笔记4:JDBC纯驱动方式连接Oracle

    JDBC纯驱动方式连接Oracle 1 下载Oracle提供的驱动程序包 下载地址: http://www.oracle.com/technetwork/database/enterprise-edi ...

  9. JAVA JDBC 连接 Oracle

    使用 Junit 测试类编写 public class JdbcTest { private Connection con = null;// 创建一个数据库连接 private PreparedSt ...

  10. Java连接Oracle数据库常用方法

    JDBC的六大步骤: 注册驱动 获取连接 获取执行sql语句对象 执行sql语句 处理结果集 关闭资源 oracle URL: jdbc:oracle:thin:@localhost:1521:SID ...

随机推荐

  1. ORA-27125: unable to create shared memory segment

    平台环境   :  Oracle Linux Server release 5.7 x86_64 数据库版本 :  Oracle Database 10g Enterprise Edition Rel ...

  2. HTML5【语法要点】

    一.头部设置 <!--页面窗口自动调整到设备宽度,并禁止用户及缩放页面--> <meta name="viewport" content="width= ...

  3. 我是如何把VC6一直用到2016年的

    写下这个标题的时候,也是表明必须需要改变的时候了…… 黄山松 (Tom Huang) 发表于博客园http://www.cnblogs.com/tomview/ 最早从windows3.1使用vb3编 ...

  4. Linux的概念与体系

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 我在这一系列文章中阐述Linux的基本概念.Linux操作系统继承自UNIX.一个 ...

  5. linux(64位的系统)下nasm进行汇编链接时出现的问题

    出现问题: $nasm -f elf hello.asm -o hello.o $ld -s hello.o -o hello ld: i386 architecture of input file ...

  6. windows常用端口对应表

    端口概念 在网络技术中,端口(Port)大致有两种意思:一是物理意义上的端口,比如,ADSL Modem.集线器.交换机.路由器用于连接其他网络设备的接口,如RJ-45端口.SC端口等等.二是逻辑意义 ...

  7. Entity Framework 6 with MySql

        MySQL Connector/Net 6.8.x MySQL Server 5.1 or above Entity Framework 6 assemblies .NET Framework ...

  8. Bootstrap CSS 表单

    表单布局 Bootstrap 提供了下列类型的表单布局: 垂直表单(默认) 内联表单 水平表单 垂直或基本表单 基本的表单结构是 Bootstrap 自带的,个别的表单控件自动接收一些全局样式.下面列 ...

  9. NOI2001|POJ1182食物链[种类并查集 向量]

    食物链 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 65430   Accepted: 19283 Description ...

  10. (原创)JAVA多线程二线程池

    一,线程池的介绍 线程池包括一下三种: 线程池名称 创建方法 特点 其他 固定大小线程池 ExecutorService threadpool = Executors.newFixedThreadPo ...