第一步:编写占位符
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;
public class InformationTest {
public static boolean insertProc1(String procName,String[] args) throws SQLException
{
System.out.println("procName初始化---"+procName);
System.out.println("args初始化---"+args);
Connection conn=null;
CallableStatement call=null;
ResultSet rs = 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);
System.out.println("将要要执行的存储过程--"+newProcName);
//创建一个预处理存储对象
call=conn.prepareCall("{call "+newProcName+" }");
//call = conn.prepareCall("{call "+newProcName+"}");
System.out.println("call要执行的存储过程--"+call);
//参数注入--占位符
for(int i=0;i<args.length;i++)
{
System.out.println("第"+(i+1)+"个,args[i]="+args[i]);
call.setString(i+1, args[i]);
}
//执行SP语句
call.execute();
System.out.println("执行SP语句:");
return true;
}
System.out.println("false");
return result;
}
public static boolean insert(int i)
{System.out.println(i+"---初始值----");
if(i>0)
{
System.out.println(i+"---满足进入----");
System.out.println("----boolean----");
return true;
}
System.out.println(i+"---初始值----");
System.out.println("----false----");
return false;
}
public static void main(String[] args) throws SQLException {
String[] params1 = new String[]{"743524358","22349808348","20170101","20170107","2" };
//insertSp("op_auction_buy_information", params1);
insertProc1("op_auction_buy_information", params1);
//insert(-2);
/*String[] params1 = new String[]{"","","","","" };
insertProc1("op_auction_buy_information", params1);*/
}
}
本文介绍了一种在Java中调用数据库存储过程的方法,包括使用预编译处理存储过程名称及参数,以及通过CallableStatement执行存储过程的具体步骤。
812

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



