第一步: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);
}
}
本文介绍了一种使用Java来调用数据库存储过程的方法,包括预编译处理及参数传递,并提供了一个具体的实例。

被折叠的 条评论
为什么被折叠?



