zoukankan      html  css  js  c++  java
  • java 调用存储过程

    import java.sql.CallableStatement;
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.ResultSetMetaData;
    import java.sql.SQLException;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.LinkedHashMap;
    import java.util.List;
    import java.util.Map;
    import java.util.TreeMap;
    
    import oracle.jdbc.OracleTypes;
    
    /**
    	 * <p>Title: executeProcedure</p>
    	 * <p>Description:执行存储过程,返回结果集 </p>
    	 * @param dbvo
    	 * @return
    	 */
    	public   static List<?> executeProcedure(DBVO dbvo) {
    		Connection conn = null;
    		CallableStatement stmt = null;
    		ResultSet rs = null;
    		String sParams = "";
    		String proName = dbvo.getProName();
    		List<?> paramsList = dbvo.getParamsList();
    
    		for (int i = 0; i <= paramsList.size() - 1; i++) {
    			if (i == 0) {
    				sParams = "?";
    			} else {
    				sParams += ",?";
    			}
    		}
    		try {
    			conn = DAOFactory.getInstance().getConnection();
    			boolean isOracle = DateTools.IsOracle(conn);
    			if (isOracle) {
    				stmt = conn.prepareCall("{ call " + proName + "(" + sParams+ ",?)}");
    				for (int i = 0; i < paramsList.size(); i++) {
    					stmt.setString(i + 1, (String) paramsList.get(i).toString().trim());
    				}
    				stmt.registerOutParameter(paramsList.size()+1, OracleTypes.CURSOR);
    				stmt.execute();
    				rs = (ResultSet) stmt.getObject(paramsList.size()+1);
    			} else {
    				stmt = conn.prepareCall("{ call " + proName + "(" + sParams
    						+ ")}");
    				for (int i = 0; i <= paramsList.size() - 1; i++) {
    					stmt.setString(i + 1, (String) paramsList.get(i).toString().trim());
    				}
    				rs = stmt.executeQuery();
    			}
    
    			ResultSetMetaData rsmd = rs.getMetaData();
    			int columnCount = rsmd.getColumnCount();
    			Map itemMap;
    			List list = new ArrayList();
    
    			while (rs.next()) {
    				itemMap = new TreeMap<String, Object>();
    
    				for (int i = 1; i <= columnCount; i++) {
    					String fldName = rsmd.getColumnLabel(i);// 别名
    					String fldValue = rs.getString(i);
    					itemMap.put(fldName, fldValue);
    				}
    				list.add(itemMap);
    			}
    			return list;
    
    		} catch (BusinessException e) {
    			e.printStackTrace();
    		} catch (SQLException e) {
    			e.printStackTrace();
    		} finally {
    			DAOFactory.closeConnection(conn, stmt, rs);
    		}
    		return null;
    	}
    

      

  • 相关阅读:
    如何从人群中看出真正优秀的人
    JAVA的面向对象编程--------课堂笔记
    uC/OS-II源码分析
    肖申克的救赎
    汇编中基本的数据类型
    十进制负数转换为二进制、八进制、十六进制的知识分享
    x86汇编指令详解
    Angularjs
    事件处理类型的三种方法
    正则表达式的使用
  • 原文地址:https://www.cnblogs.com/ITinfo/p/4541858.html
Copyright © 2011-2022 走看看