JDBC调用存储过程: CallableStatement

在Java里面调用存储过程,写法那是相当的固定:
Class.forName(....
Connection conn = DriverManager.getConnection(....
/**
*p是要调用的存储过程的名字,存储过程的4个参数,用4个?号占位符代替
*其余地方写法固定
*/
CallableStatement cstmt = conn.prepareCall("{call p(?,?,?,?)}");
/**
*告诉JDBC,这些个参数,哪些是输出参数,输出参数的类型用java.sql.Types来指定
*下面的意思是,第3个?和第4个?是输出参数,类型是INTEGER的
*Types后面具体写什么类型,得看你的存储过程参数怎么定义的
*/
cstmt.registerOutParameter(3, Types.INTEGER);
cstmt.registerOutParameter(4, Types.INTEGER);
/**
*在我这里第1个?和第2个?是输入参数,第3个是输出参数,第4个既输入又输出
*下面是设置他们的值,第一个设为3,第二个设为4,第4个设置为5
*没设第3个,因为它是输出参数
*/
cstmt.setInt(13);
cstmt.setInt(24);
cstmt.setInt(45);
//执行
cstmt.execute();
//把第3个参数的值当成int类型拿出来
int three = cstmt.getInt(3);
System.out.println(three);
//把第4个参数的值当成int类型拿出来
int four = cstmt.getInt(4);
System.out.println(four);
//用完别忘给人家关了,后开的先关
cstmt.close();
conn.close();
 
JDBC调用存储过程,掌握这一个程序足够了.
以下是上面程序使用的存储过程的代码,我用的是Oracle数据库,不过不论是什么数据库,对于你的程序,JDBC这一端写法都是一样的.
 
create or replace procedure p
(v_a in number,v_b number,v_ret out number,v_temp in out number)
is
begin
if(v_a > v_b) then
v_ret := v_a;
else
v_ret := v_b;
end if;
v_temp := v_temp + 1;
end;

在Java中调用带参数的存储过程的更多相关文章

  1. Java程序调用带参数的shell脚本返回值

    Java程序调用带参数的shell脚本返回值 首先来看看linux中shell变量(\(#,\)@,$0,$1,\(2)的含义解释 变量说明: -  \)$  Shell本身的PID(ProcessI ...

  2. [转]SSIS OLE DB Source中执行带参数的存储过程

    本文转自:http://www.cnblogs.com/michaelxu/archive/2009/10/21/1587450.html 问题描述:执行一个存储过程得到一个多条记录的结果集,然后循环 ...

  3. 在C#中怎么调用带参数的存储过程啊??

    1)执行一个没有参数的存储过程的代码如下:SqlConnection conn=new SqlConnection(“connectionString”);SqlDataAdapter da = ne ...

  4. 20150825 C# 调用带参数的存储过程 模板

    ////// exec proceudre2                        //System.Data.SqlClient.SqlConnection sqlcon = new Sys ...

  5. ado.net 调用带参数的存储过程

    String connString = "Data Source = localhost; Initial Catalog = hkjc;User ID = sa;Pwd = 123&quo ...

  6. ado.net调用带参数的存储过程

  7. c#调用Mysql带参数的存储过程

    1.首先创建一个带参数的存储过程 ①存储过程名称=proc_bookinfo  ②存储过程2个参数 一个in 一个out in参数名称=ispay out参数名称=unPaycount ③ 这个存储过 ...

  8. Sql Server 带参数的存储过程执行方法

    Sql Server 带参数的存储过程执行方法 Visual C# 动态操作 SQL Server 数据库实例教程(4):带参数的存储过程执行方法 上一篇文章介绍了带参数的SQL语句执行方法和不带参数 ...

  9. java中调用dll文件的两种方法

    一中是用JNA方法,另外是用JNative方法,两种都是转载来的, JNA地址:http://blog.csdn.net/shendl/article/details/3589676   JNativ ...

随机推荐

  1. go09---defer

    package main /* defer 类似其它语言中的析构函数,在函数体执行结束后 按照调用顺序的相反顺序逐个执行,先进后出, 即使函数发生严重错误也会执行,资源清理文件关闭, 支持匿名函数的调 ...

  2. clojure学习记录

    take 从列表中获取子列表 into a b  把b conj 到a中 (defn count-a-seq [lat]  (reduce (fn [x y] (+ x 1)) 0 lat)) red ...

  3. luogu 3951 小凯的疑惑

    noip2017 D1T1 小凯的疑惑 某zz选手没有看出这道结论题,同时写出了exgcd却不会用,只能打一个哈希表骗了30分 题目大意: 两个互质的正整数a和b,求一个最小的正整数使这个数无法表示为 ...

  4. 【JSOI 2008】 最小生成树计数

    [题目链接] 点击打开链接 [算法] 笔者做这题参考了这篇博客 : https://blog.sengxian.com/solutions/bzoj-1016 推荐阅读 首先,我们需要知道三个定理 : ...

  5. Gamma的完全理解

    Gamma校正 问题:什么是Gamma曲线矫正?Gamma曲线矫正是什么意思?       Gamma曲线是一种特殊的色调曲线,当Gamma值等于1的时候,曲线为与坐标轴成45°的直线,这个时候表示输 ...

  6. Java中try,catch,finally的用法

    Java中try,catch,finally的用法,以前感觉还算熟悉,但看到一篇博文才有更深点的理解,总结网友博客如下. Java异常处理的组合方式: 1.try+catch  运行流程:运行到try ...

  7. 深入理解JMM(Java内存模型) --(六)final

    与前面介绍的锁和volatile相比较,对final域的读和写更像是普通的变量访问.对于final域,编译器和处理器要遵守两个重排序规则: 在构造函数内对一个final域的写入,与随后把这个被构造对象 ...

  8. 【转载】批量部署系统之kickstart

    一.安装各服务: ftp服务提供软件软件源,tftp提供引导文件,dhcp提供PXE文件位置,syslinux提供PXE文件 [root@node1~]# yum -y installtftp-ser ...

  9. [App Store Connect帮助]六、测试 Beta 版本(4.1) 管理 Beta 版构建版本:为构建版本添加测试员

    在“TestFlight”部分中,您可以查看您所有 App 版本的构建版本,并深入查看构建版本的详细信息.您也可以为某个构建版本添加群组或独立测试员. 必要职能:“帐户持有人”职能.“管理”职能或“A ...

  10. Moco模拟服务器post&get请求 (二)

    1.moco启动命令如下:java -jar moco-runner-0.12.0-standalone.jar 协议类型 -p 端口号 -c json配置文件 2.带参数的get请求 [ { &qu ...