时光清风 - JEECG系列-02 通用调用存储过程方法

JEECG系列-02 通用调用存储过程方法

极速小旋风5年前Java6551

通用的调用存储过程方法



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.存储过程

JEECG002-1.png


5.结果

JEECG002-2.png


6.其他

本例只是尝试了一种方式,其实JEECG中已经有与此不太一样的类,例如JdbcDao、SimpleJdbcTemplate,当然还有JdbcTemplate。


相关文章

JEECG系列-01 环境搭建

JEECG系列-01 环境搭建

JEECG官方简介:JEECG是一款基于代码生成器的J2EE快速开发平台,开源界“小普元”超越传统商业企业级开发平台。引领新的开发模式(Online Coding模式(自定义表单)->代码生成器...

JEECG系列-03 文档上传及预览

JEECG系列-03 文档上传及预览

JEECG中文档管理非常简单,只需要设置字段类型为文件即可自动生成一堆上传、预览代码,当然想要实现预览需要借助第三方工具OpenOffice转换。 1...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。