mysql存储过程调用方法:
// 定义变量 private static Connection ct = null; private static CallableStatement cs = null;
//……省略部分jdbc通用代码
public static CallableStatement callPro1(String sql, String[] parameters) { try { ct = getConnection(); cs = ct.prepareCall(sql); if (parameters != null) { for (int i = 0; i < parameters.length; i++) { cs.setObject(i + 1, parameters[i]); } } cs.execute(); } catch (Exception e) { e.printStackTrace(); throw new RuntimeException(e.getMessage()); } finally { close(rs, cs, ct); } return cs; }
@Override public void changeOrder(String cid, String changevalue) { new SqlHelper(); SqlHelper.callPro1("{call Changeorder(?,?)}",new String[]{cid,changevalue}); }
Changeorder(?,?)为存储过程名,?为输入参数。
new String[]{cid,changevalue}为存储过程参数赋值
这里还有带有输入输出的方法,项目中没有用到,记录一下
// *******************callpro2存储过程2************************ public static CallableStatement callPro2(String sql, String[] inparameters, Integer[] outparameters) { try { ct = getConnection(); cs = ct.prepareCall(sql); if (inparameters != null) { for (int i = 0; i < inparameters.length; i++) { cs.setObject(i + 1, inparameters[i]); } } // cs.registerOutparameter(2,oracle.jdbc.OracleTypes.CURSOR); if (outparameters != null) { for (int i = 0; i < outparameters.length; i++) { cs.registerOutParameter(inparameters.length + 1 + i, outparameters[i]); } } cs.execute(); } catch (Exception e) { e.printStackTrace(); throw new RuntimeException(e.getMessage()); } finally { } return cs; }