简单版的JDBC存储过程--输入通用方法
2017-09-04 18:45
190 查看
第一步:编写占位符
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);*/
}
}
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 jdbc 调用存储过程方法
- jdbc 调用 sql server 的存储过程时“该语句没有返回结果集”的解决方法
- VC调用存储过程的通用方法(ORACLE篇)
- 通用SQL存储过程分页以及asp.net后台调用的方法
- 存储过程中通用删除与查询方法
- VC调用存储过程的通用方法(ORACLE篇)
- JDBC存储过程的通用分页
- jdbc调用存储过程的方法
- VC调用存储过程的通用方法(SQLServer篇)
- VC调用存储过程的通用方法(SQLServer篇)
- 利用存储过程实现交叉表格式数据查询的一种通用方法
- jdbc 调用 sql server 的存储过程时“该语句没有返回结果集”的解决方法
- (转)jdbc 调用 sql server 的存储过程时“该语句没有返回结果集”的解决方法
- 利用存储过程实现交叉表格式数据查询的一种通用方法
- Asp.Net 中通用存储过程执行方法
- VC调用存储过程的通用方法(SQLServer篇)
- 通用的SQL和Oracle的存储过程执行方法
- jdbc 包含存储过程的主要连接数据库方法
- 通用分页存储过程注入问题解决方案:不用存储过程,通用分页查询方法
- [转载]VC调用存储过程的通用方法(SQLServer篇)