JDBC存储过程--输入方法

本文介绍了一种使用Java来调用数据库存储过程的方法,包括预编译处理及参数传递,并提供了一个具体的实例。

第一步:ConnSql 占位符方法

package com.yanshu.util;


public class ConnSql {


public ConnSql() {
}
/*
* 传入参数即存储名称预编译处理
*/
public static String storageNameHandle(String storageName , Integer size){

//参数没有,直接返回存储名
if(size <= 0){
return storageName;
}
//预处理参�?
String params = "?";
//参数拼接
for (int i = 1; i < size; i++) {
params+=",?";
}
String newstorageName = storageName + "("+params+")";

return newstorageName;

}

public static void main(String[] args) {

String newstorageName = ConnSql.storageNameHandle("call op_search_flow_port_analysis_trend ",4);

System.out.println("newstorageName="+newstorageName);
}
}

第2步:调用输入的存储过程

package com.yanshu.util;


import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
 * 存储过程
 * @author Administrator
 *
 */
public class ProcUtil {
/**
* 存储过程的输入的方法
* @param procName 传递的存储过程的名称
* @param args 传递的存储过程的参数
* @return 返回存储过程的数据
* @throws SQLException
*/
public static boolean insertProc(String procName,String[] args) throws SQLException
{
Connection conn=null;
CallableStatement call=null;
boolean result=false;
//考虑到没有传递参数或者是空值直接经过false
//insertProc1("op_auction_buy_information", args);
if(StringUtils.isNullorEmpty(args)||StringUtils.isNullorEmpty(args))
{
return false;
}
if(result=true)
{
conn=JdbcUtil.getConn();
String newProcName=ConnSql.storageNameHandle(procName, args.length);
//创建一个预处理存储对象
call=conn.prepareCall("{call "+newProcName+" }");
procObject(args, call);
//执行SP语句
call.execute();
System.out.println("执行SP语句;成功");
return true;
}
System.out.println("执行sp失败");
return result;
}




/**
* 传递存储过程的参数
* @param args 传递的参数
* @param call CallableStatement 的对象
* @throws SQLException
*/
private static void procObject(String[] args, CallableStatement call) throws SQLException {
for(int i=0;i<args.length;i++)
{
System.out.println("第"+(i+1)+"个,args[i]="+args[i]);
call.setString(i+1, args[i]);
}
}




public static void main(String[] args) throws SQLException {

String[] params1 =  new String[]{"743524358","22349808348","20170101","20170107","2" };
//insertProc("op_auction_buy_information", params1);
insertProc("op_auction_buy_information", params1);

}


}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值