利用java如何调用存储过程-创新互联

本篇文章给大家分享的是有关利用java如何调用存储过程,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

成都服务器托管,创新互联建站提供包括服务器租用、服务器托管机柜、带宽租用、云主机、机柜租用、主机租用托管、CDN网站加速、域名申请等业务的一体化完整服务。电话咨询:028-86922220

详解java调用存储过程并封装成map

           本文代码中注释写的比较清楚不在单独说明,希望能帮助到大家,

实例代码:

public List> doCallProcedure(String procedureString,String[] parameters) 
                   throws PersistentDataOperationException { 
             if (!isReady ()) { 
                   throw new PersistentDataOperationException( "DAO is not ready."); 
             } 
            ResultSet rs = null; 
            List> list = new ArrayList>(); 
             try { 
                   Connection con=session.connection(); 
                   String procedure = "{call "+procedureString+ "(?,?,?) }"; //拼装调用存储过程字符串 
                  CallableStatement cstmt = con.prepareCall (procedure ); //调用存储过程 
                  cstmt.setString (1,parameters [0 ]); //设置入参 
                  cstmt.setInt (2, Integer. parseInt( parameters[ 1])) ;//设置入参 
                  cstmt.registerOutParameter (3, oracle.jdbc.OracleTypes.CURSOR ); //设置出参 
                   
                  cstmt.execute (); //执行提交 
                  rs = (ResultSet ) cstmt.getObject (3 ); //获取出参,3为参数顺序数 
                  ResultSetMetaData rsm =rs.getMetaData (); //获得列集 
                  Map< String, Object> map= null; 
                   int col = rsm.getColumnCount ();  //获得列的个数 
                   String colName [] = new String[ col] ;//列名集合 
                   for (int i = 0; i < col; i++) { 
                        colName [i ] = rsm.getColumnName (i+1 ); 
                   } 
                   while( rs.next()){ 
                         //注意访问结果集是从索引位置1开始的,而不是0 
                        map = new HashMap< String, Object> (); 
                         for (int j = 0; j < colName.length; j++) { 
                              map.put (colName [j ], rs.getString (j+1 )); 
                         } 
                        list.add (map ); 
                   } 
                   session.flush (); 
             } catch (HibernateException e) { 
                   throw new PersistentDataOperationException( e) ; 
             } catch (SQLException e) { 
                  e.printStackTrace (); 
             } 
             return list; 
       } 


当前题目:利用java如何调用存储过程-创新互联
网站地址:http://scyanting.com/article/gicdj.html