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;
    	}
    

      

  • 相关阅读:
    关于MySQL数据库优化的部分整理
    PHP跨域form提交
    px、dp和sp,这些单位有什么区别?
    301和302 Http状态有啥区别?
    PHP HTTP请求
    php的http_build_query使用
    nginx ssi 模块
    MongoDB学习笔记(一) MongoDB介绍及安装(摘)
    Django Admin 录入中文错误解决办法
    关于python字符串连接的操作
  • 原文地址:https://www.cnblogs.com/ITinfo/p/4541858.html
Copyright © 2011-2022 走看看