//创建存储过程

alter proc [dbo].[proc_get_customer1] (
@sid varchar(10),
@name varchar(20) out,
@birth datetime out,
@email varchar(30) out,
@id char(10) out
)with recompile
as
begin
select id,name,birth,email from customers where id<@sid
select @id=id,@name=name,@birth=birth,@email=email from customers where id<@sid
end

/**
*
* @param sql
* @param outCount
* @param params:为IN参数即输入参数,需要注意的是存储过程或函数的输入参数在前,输出参数在后,若有output即输入输出参数的话将output属性的参数放到中间
*/
public void callableProc(String sql, int outCount, Object... params) {
Connection connection = null;
CallableStatement callableStatement = null;
ResultSet resultSet = null;
try {
connection = JDBCTools.getConnection();
callableStatement = connection.prepareCall(sql);
if (!sql.contains("=")) {
for (int i = 0; i < params.length; i++) {
callableStatement.setObject(i + 1, params[i]);
}
callableStatement.registerOutParameter(2,Types.VARCHAR);
callableStatement.registerOutParameter(3, Types.DATE);
callableStatement.registerOutParameter(4, Types.VARCHAR);
callableStatement.registerOutParameter(5,Types.CHAR);
}else{
for (int i = 0; i < params.length; i++) {
callableStatement.setObject(i + 2, params[i]);
}
}
resultSet=callableStatement.executeQuery();
//获得输出参数的cstmt.getInt(3)必须在处理完结果集的所有内容后再执行否则会抛出异常:java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Object has been closed.
while(resultSet.next()){
for(int i=0;i<4;i++){
System.out.print(resultSet.getObject(i+1)+" a ");
}
System.out.println();
}
System.out.println(callableStatement.getString(2));
System.out.println(callableStatement.getDate(3));
System.out.println(callableStatement.getString(4));
System.out.println(callableStatement.getString(5));
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
JDBCTools.release(resultSet, callableStatement, connection);
}

}

//下面是测试

@Test
public void testCustomerProc() {
String sql = "{call proc_get_customer1(?,?,?,?,?)}";
String[] params = { "100090" };
customerDao.callableProc(sql, 5, params);
}

转载于:https://www.cnblogs.com/xiaona19841010/p/5226181.html

如何使用JDBC调用存储在数据库中的函数或存储过程 */相关推荐

  1. php将soap返回的xml转成数组,PHP – 在PHP中将XML转换为数组 – 在php中解析soap xml并将其存储在数据库中...

    我想转换soap xml响应并将其存储在数据库中.这是我的XML. 200 example2 ex2 example2@example2.com example2, example2 example2 ...

  2. MySQL:如何将树形结构存储在数据库中

    文章目录 问题 方案一 Adjacency List(存储父节点) 数据库存储结构 SQL示例 1.添加节点 2.查询小天的直接上司 3.查询老宋管理下的直属员工 4.查询小天的所有上司 5.查询老王 ...

  3. java rsa 存数据库_java – 如何创建RSA密钥对以便将其存储在数据库中?

    我正在尝试实现变异加密算法(理论上由我开发)并作为需求的一部分,我需要生成一个RSA密钥对并将其存储在数据库中,以便以后作为加密过程的一部分进行检索(仅用于加密会话密钥,以便可以使用加密的消息安全地发 ...

  4. android 对象数据库中,解析嵌套的JSON对象,并存储在数据库中的Android

    我只是试图让存储在我的JSON文件中的值,并将其保存到SQLite数据库:解析嵌套的JSON对象,并存储在数据库中的Android 这是我的JSON文件: { "list": { ...

  5. 如何用DELPHI实现把WORD、EXCEL和图片等存储到数据库中

    如何用DELPHI实现把WORD.EXCEL和图片等存储到数据库中 用image字段保存这些文档.     var         word_stream:   TMemoryStream;      ...

  6. python爬取携程网航班机票信息并存储到数据库中,2020年最新版本

    我们先看一下携程网的信息 从以上我们可以获取两个信息 1.我是从上海到成都的 2.7条航班信息 教你如何爬虫 我不教静态网页的爬虫,因为太简单了:我们直接上手携程网 我们到这个上述这个页面以后,我推荐 ...

  7. 索引视图是否物理存储在数据库中以及使用索引视图的一些见解

    索引视图是否物理存储在数据库中以及使用索引视图的一些见解 前言 这个话题我本来是写在文章里没有写在随笔里的,不过赶脚不写在随笔里其他人就看不到了,因为小弟对视图的认识不深 希望写在随笔里让大家也讨论一 ...

  8. Kettle 使用资源库功能把ktr元数据统一存储到数据库中

    原创作品,出自 "深蓝的blog" 博客,欢迎转载,转载时请务必注明出处,否则追究版权法律责任. 深蓝的blog:http://blog.csdn.net/huangyanlong ...

  9. 如何在Python中将数字文件存储在数据库中

    Databases like MySQL and PostgreSQL are all ideal for storing tables with numeric and text data. How ...

最新文章

  1. puppeteer php,puppeteer 页面爬取实例(元素遍历)
  2. 怎么发送文件到服务器端,使用HttpClient发送文件流到服务器端
  3. 校园网站服务器配置参数,校园网服务器性能 配置及分布
  4. QT的QBoxPlotSeries类的使用
  5. 在C#调用C++的DLL简析(二)—— 生成托管dll
  6. 鲜为人知的软件项目管理原则(转)
  7. 用单片机测量流体流速的_流量测量的主要方法
  8. android style边界显示兼容问题,android – IDE“无法解析@ style/Theme.Appcompat”时使用v7兼容性支持主题...
  9. zabbix3.0.4监控mysql主从同步
  10. 分布式模块之间的调用_分布式事务
  11. python3文档字符串_python3基础:字符串、文本文件
  12. xcode checkout验证错误解决方法
  13. influxdb 配置
  14. lt;九度 OJgt;题目1545:奇怪的连通图
  15. 在LoadRunner中设置HTTP请求time-out的时间
  16. 使开发更便捷——Visual Studio 使用技巧——快捷键
  17. VB数据库中EOF和BOF的认识与用法
  18. 未在计算机上注册控件-已解决
  19. 125K非接触IC卡读卡头
  20. jQuery的选择器大全

热门文章

  1. linux环境禁用apache目录浏览功能
  2. sql xp_cmdshell
  3. Win7下拖拽文件的bug
  4. oracle locked timed,Oracle里面的用户smsdb无法登录 LOCKED(TIMED)
  5. c++primer 5th习题12.25答案
  6. apex图表使用饼图居中_echarts饼图标题居中以及调整主副标题的间距、字号
  7. Ubuntu下 Hadoop 1.2.1 配置安装
  8. 使用Memory Analyzer tool(MAT)分析内存泄漏
  9. zoj How Many Shortest Path
  10. 如何使用Ubuntu打电话