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的更多相关文章
-
oracle:jdbcTest
JDBC连接数据库 •创建一个以JDBC连接数据库的程序,包含7个步骤: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), 这通过java.l ...
-
jdbc连接oracle数据库
/*** 通过改变配置文件来连接不同数据库*/package com.xykj.jdbc; import static org.junit.Assert.*; import java.io.Input ...
-
JDBC链接oracle已经mysql的测试
1.链接oracle package cn.itcast.mybatis.dao; import java.sql.Connection;import java.sql.DriverManager;i ...
-
1、原生jdbc连接oracle数据库简单介绍
一.jbdc的常用API1.Connection:数据库的链接对象2.statement:数据库sql执行对象3.preparedStatment:sql的预编译处理对象,是statement子接口4 ...
-
基于oracle数据库存储过程的创建及调用
1.PLSQL编程 1.1概念和目的 PL/SQL(Procedure Language/SQL) PLSQL是Oracle对sql语言的过程化扩展 指在SQL命令语言中增加了过程处理语句(如分支.循 ...
-
oracle入门(二)
### 一,视图 ```1. 什么是视图 视图是一张虚表, 可以把视图看成表使用(增删改查),视图中没有数据,所有的数据都在基本表中(tables) 封装了一个复杂的DQL 操作视图 ...
-
Java连接Oracle数据库的三种连接方式
背景: 这两天在学习Oracle数据库,这里就总结下自己上课所学的知识,同时记录下来,方便整理当天所学下的知识,也同时方便日后自己查询. SQL语句的话,这里我就不多讲了,感觉和其他的数据库(MySQ ...
-
Java笔记4:JDBC纯驱动方式连接Oracle
JDBC纯驱动方式连接Oracle 1 下载Oracle提供的驱动程序包 下载地址: http://www.oracle.com/technetwork/database/enterprise-edi ...
-
JAVA JDBC 连接 Oracle
使用 Junit 测试类编写 public class JdbcTest { private Connection con = null;// 创建一个数据库连接 private PreparedSt ...
-
Java连接Oracle数据库常用方法
JDBC的六大步骤: 注册驱动 获取连接 获取执行sql语句对象 执行sql语句 处理结果集 关闭资源 oracle URL: jdbc:oracle:thin:@localhost:1521:SID ...
随机推荐
-
console的高级使用
1.console.table()用来表格化展示数据. var people = { zqz: { name: 'zhaoqize', age: 'guess?' }, wdx: { name: 'w ...
-
Windows phone应用开发[17]-xap提交异常处理
在windows phone 应用提交操作上早在2011年时就写过一篇Windows phone 应用开发[4]-应用发布,那时wp应用提交官方市场的流程繁杂[超过了5步].因为上传和填写应用信息页面 ...
-
tp的极光推送demo
原文地址:http://blog.csdn.net/zhihua_w/article/details/52197611 极光推送(JPush)是独立的第三方云推送平台,致力于为全球移动应用开发者提供专 ...
-
requirejs+cdn
当requirejs加上cdn.cdn固然可以在requirejs里面配置.但是在a.html里面却不能通过给自己引用的requirejs文件添加版本戳. 最重要的是requirejs不能引进css当 ...
-
Html代码保存为Pdf文件
前段时间Insus.NET有实现了<上传Text文档并转换为PDF>http://www.cnblogs.com/insus/p/4313092.html 和<截取视图某一段另存为部 ...
-
HTTP Session原理
深入理解HTTP Session session在web开发中是一个非常重要的概念,这个概念很抽象,很难定义,也是最让人迷惑的一个名词,也是最多被滥用的名字之一,在不同的场合,session一次的 ...
-
启动tomcat时报classpath not found
启动tomcat时报classpath not found 原因是缺包,首先查看tomcat安装地址,然后找到webapps目录下,找到该项目,看lib下是否缺包,不能单纯的看项目下是否缺包.
-
PHP比较全的友好的时间显示,比如‘刚刚’,&#39;几秒前&#39;等
分享一个php友好的比较完成的时间格式化函数,包括‘刚刚’,'几秒之前',‘几分钟前’,'几小时前',几天前,几周前,几个月前等.调用方式很简单,是从ThinkSNS 里面拿出来的. /** * 友好 ...
-
codeforces 374D. Inna and Sequence 线段树
题目链接 给m个数, n个操作, 一个数列, 初始为空.一共有3种操作, 在数列末尾加0, 加1, 或删除位置为a[i]的数, a[i]为初始给的m个数, 如果a[i]大于数列长度, 那么什么也不发生 ...
-
Android Looper原理分析
实际业务使用场景: 某业务场景需要将本地数据传递到服务端,服务端再返回传递成功或者失败的信息. 1. 失败时: 重传5次 2.设置客户端请求的最小时间间隔,这个间隔内最多请求1次 具体逻辑如下:(这里 ...