JEECG系列-02 通用调用存储过程方法
通用的调用存储过程方法
1.通用连接类
public class common_sql_jdbc {
private Connection conn;
public Connection getConnection(){
try {
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
}catch (ClassNotFoundException e) {
e.printStackTrace();// 打印驱动加载错误详细信息
}
PropertiesUtil util = new PropertiesUtil("dbconfig.properties");
String jdbc_sqlserver = util.readProperty("jdbc.url.jeecg");
String username_sqlserver = util.readProperty("jdbc.username.jeecg");
String pwd_sqlserver = util.readProperty("jdbc.password.jeecg");
conn=DriverManager.getConnection(jdbc_sqlserver,username_sqlserver,pwd_sqlserver);
if(conn==null){
//System.out.println("数据库连接失败");
}else {
//System.out.println("数据库连接成功");
}
} catch (Exception e) {
e.printStackTrace();
System.out.println("数据库连接失败:"+e.getMessage());
}
return conn;
}
}
2.调用存储过程通用方法
/*
* 通用方法,调用带输出参数的存储过程
* para:多个Object(任意类型)
* return:一个string
*/
public static String call_sp(String sp,Object...input) throws SQLException{
String ret="";
int input_nbr=input.length;
String statement="";
conn=new common_sql_jdbc().getConnection();
if(conn==null){
//System.out.println("数据库链接失败");
ret="0:数据库链接失败";
}else {
try {
statement="{call "+sp+"(";
for(int i=1;i<=input_nbr;i++) {
statement=statement+"?,"; //每个输入参数
}
statement=statement+"?) }";//一个输出参数
CallableStatement cs=conn.prepareCall(statement);
for(int i=1;i<=input_nbr;i++) {
cs.setObject(i,input[i-1]);//每个输入参数赋值
}
cs.registerOutParameter(input_nbr+1, Types.VARCHAR);
cs.execute();
ret="1:"+cs.getString(input_nbr+1);
} catch (Exception e) {
ret="0:调用失败"+e.getMessage();
}
}
conn.close();
return ret;
}
3.调用方法
@RequestMapping(params = "call_sp")
@ResponseBody
public AjaxJson call_sp() {
AjaxJson j = new AjaxJson();
Map<String,Object> m=new HashMap<String,Object>();
try {
String ret;
ret=common_sql_interface_sqlserver.call_sp("test5", 3,"para2");
j.setMsg(ret);
j.setSuccess(true);
}catch(Exception e) {
//e.printStackTrace();
System.out.println("失败:"+e.getMessage());
j.setSuccess(false);
}
return j;
}
4.存储过程
5.结果
6.其他
本例只是尝试了一种方式,其实JEECG中已经有与此不太一样的类,例如JdbcDao、SimpleJdbcTemplate,当然还有JdbcTemplate。