项目数据库执行

DBtool.java

package com.zte.upf.client.util;

import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;

import org.apache.log4j.Logger;

public class DBTool {
	private static final Logger log = Logger.getLogger(DBTool.class);
	
	private static Properties config = new Properties();
	
	static{	
		try {
			config.load(DBTool.class.getClassLoader().getResourceAsStream("database/oracle.properties"));
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	/**
	 * 实现分页查询的功能
	 * @param sql 查询的SQL语句
	 * @param params SQL参数
	 * @param page 分页参数(要查询的页数、每页大小)
	 * @param isCount 是否查询总数
	 * @return 结果集,包括分页信息
	 */
	public Page queryDataOfPage(Page page, String sql,boolean isCount, Object ...params){
		List<Map<String,String>> resultList = new ArrayList<Map<String,String>>();
		try {
			if(isCount){
				page.setTotalCount(count(sql, params));
				if(page.getPageNum() > page.getPageCount()){
					page.setPageNum(page.getPageCount());
				}
			}
			String _pageHandle = config.getProperty("PageHandle");
			_pageHandle = _pageHandle.replace("#SQL#", sql);
			_pageHandle = _pageHandle.replace("#BEGININDEX#", "" + page.getBeginIndex());
			_pageHandle = _pageHandle.replace("#ENDINDEX#", "" + page.getEndIndex());
			resultList = (List<Map<String, String>>) this.doQuery(_pageHandle, params);
			page.setData(resultList);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return page;
	}
	/**
	 * 查询总记录数
	 * @param sql 查询的SQL语句
	 * @param params SQL参数
	 * @return int 记录数
	 * @throws Exception
	 */
	public int count(String sql, Object ...params) throws Exception{
		StringBuffer sb = new StringBuffer("SELECT count(1) as count FROM (");
		sb.append(sql);
		sb.append(")");
		List<Map<String, String>> countList = doQuery(sb.toString(), params);
		if(countList.size() > 0){
			Map<String,String> countMap = countList.get(0);
			return Integer.parseInt(countMap.get("count"));
		}
		return 0;
	}

	
	/**
	 * 根据SQL查询结果集
	 * @param sql 查询的SQL语句
	 * @param objs SQL参数
	 * @return List<Map<String, String>> 查询结果列表
	 * @throws Exception
	 */
	public List<Map<String, String>> doQuery(String sql, Object ... params) throws Exception {
		Connection conn = null;
		//Statement stmt = null;
		PreparedStatement pstmt = null;
		ResultSet result = null;
		try {
			// 取出一个数据库连接
			conn = ConnectionPool.getInstance().getConnection();
			// 取出游标
			pstmt = conn.prepareStatement(sql);
			//设置参数
			for(int i = 0; i < params.length; i++){
				pstmt.setObject(i + 1, params[i]);
			}
			
			// 执行SQL查询语句
			result = pstmt.executeQuery();
			// 获得结果集中字段类型属性
			ResultSetMetaData metaData = result.getMetaData();
			String[] names = new String[metaData.getColumnCount()];
			// 循环定位,获得字段名称和类型
			int i = 0;
			for (i = 0; i < metaData.getColumnCount(); i++) {
				names[i] = (metaData.getColumnLabel(i + 1)).toLowerCase();
			}
			String str = "";
			// 取出查询结果
			List<Map<String, String>> lst = new ArrayList<Map<String, String>>();
			HashMap<String, String> tmp = new HashMap<String, String>();
			while (result.next()) {
				// 重构输出结构
				tmp = new HashMap<String, String>();
				// 按字段名循环定制输出结构
				for (i = 0; i < names.length; i++) {
					// 不管什么数据类型,一律按字符串取出
					str = result.getString(i + 1);
					// 如果取出的字段是null值,将这个字符串置为空字符串
					str = str == null ? "" : str.trim();
					// 定制输出结构
					tmp.put(names[i], str);
				}
				lst.add(tmp);
			}
			return lst;
		} catch (Exception e) {
			log.error("sql:" + sql, e);
			throw e;
		} finally {
			try {
				// 关闭数据库查询结果集
				if (result != null) {
					result.close();
				}
				result = null;
				if (pstmt != null) {
					pstmt.close();
				}
			} catch (Exception e) {
			}
			try {
				// 归还数据库连接
				ConnectionPool.getInstance().returnConnection(conn);
			} catch (Exception e) {
			}
		}
	}
	
	/**
	 * 执行增、删、改操作
	 * @param sql 要执行的SQL语句
	 * @param objs SQL参数
	 * @return 执行返回的成功记录数,0-失败;大于0成功
	 * @throws Exception
	 */
	public int doUpdate(String sql, Object... objs) throws Exception {
		Connection conn = null;
		PreparedStatement ps = null;
		try {
			// 取出一个数据库连接
			conn = ConnectionPool.getInstance().getConnection();
			// 取出游标
			ps = conn.prepareStatement(sql);
			for (int i=0; i<objs.length; i++){
				ps.setObject(i+1, objs[i]);
			}
			int ret = ps.executeUpdate();
			
			return ret;
		} catch (Exception e) {
			log.error("sql:" + sql, e);
			throw e;
		} finally {
			try {
				// 关闭数据库查询结果集
				if (ps != null) {
					ps.close();
				}
			} catch (Exception e) {
			}
			try {
				// 归还数据库连接
				ConnectionPool.getInstance().returnConnection(conn);
			} catch (Exception e) {
			}
		}
	}
}


DBUtil.java

package com.zte.aspportal.comm.db;


import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.zte.aspportal.application.bean.AppServiceArea;
import com.zte.aspportal.application.bean.Application;
import com.zte.aspportal.comm.exception.WebException;
import com.zte.aspportal.comm.util.Page;
import com.zte.toolstore.tools.InitConstants;
import com.zte.zxywpub.ZXYWException;

import examples.nntp.newsgroups;

public class DBUtil extends ywaccess{
	
	public static ywaccess yw=new ywaccess();
	/**
	 * 根据开关判断是否打印sql语句
	 * @return
	 */
	public static boolean printSql(){
		String printsql = InitConstants.getInstance().getString("printsql");
		if(printsql == null || "".equals(printsql))
			printsql = "1";
		
		return Integer.valueOf(printsql) == 0 ? false:true;
	}
	/**
	 * 查询语句
	 * @param sql
	 * @return
	 * @throws Exception
	 */
    public static List<Map<String,String>> doQuery(String sql,List<Object> listParma) throws WebException{
    	List<Map<String,String>> list = new ArrayList<Map<String,String>>();        
        Connection conn = null;
        Statement stmt = null;
        PreparedStatement pstmt = null;
        ResultSet result = null;
        String connstr = "";
        if(printSql())
        	logger.info("doQuery:"+sql);

        try
        {            
            connstr = yw.getDefScpid();

            conn = yw.dbconn(connstr);

            if(listParma == null || listParma.size() == 0){
            	stmt = yw.getstmt(conn);
            	result = yw.executeQuery(sql, stmt);
            }else {
            	pstmt = yw.getPreStmt(conn, sql);
            	for(int i =0 ;i < listParma.size();i++){
            		pstmt.setString(i+1, (String)(listParma.get(i)+""));
            	}
            	result = yw.executeQuery(pstmt);
			}

			// 获得结果集中字段类型属性
			ResultSetMetaData metaData = result.getMetaData();
			String[] names = new String[metaData.getColumnCount()];
			// 循环定位,获得字段名称和类型
			int i = 0;
			for (i = 0; i < metaData.getColumnCount(); i++) {
				names[i] = (metaData.getColumnLabel(i + 1)).toLowerCase();
			}
			String str = "";
			// 取出查询结果
			HashMap<String, String> tmp = new HashMap<String, String>();
			while (result.next()) {
				// 重构输出结构
				tmp = new HashMap<String, String>();
				// 按字段名循环定制输出结构
				for (i = 0; i < names.length; i++) {
					// 不管什么数据类型,一律按字符串取出
					str = result.getString(i + 1);
					// 如果取出的字段是null值,将这个字符串置为空字符串
					str = str == null ? "" : str.trim();
					// 定制输出结构
					tmp.put(names[i], str);
				}
				list.add(tmp);
			}
            return list;
        } catch (WebException e)
        {
            throw e;
        } catch (Exception e)
        {

            throw new WebException("任务执行失败,请与系统管理员联系!");
        } finally
        {
            try
            {
                if (stmt != null)
                {
                    stmt.close();
                }
            } catch (Exception e)
            {
                stmt = null;
            }
            try
            {
                if (conn != null)
                {
                    yw.dbfree(conn, connstr);
                }
            } catch (Exception e)
            {
                throw new WebException(e.getMessage());
            }
        }
    }
    
	/**
	 *  
	 * 实现查询分页的功能
	 * 
	 * @param page
	 * @param sql
	 * @param isCount
	 * @param params
	 * @return 结果集
	 */
	public static List<Map<String,String>> handlePage(Page page, String sql,boolean isCount,List<Object> listParma){
		List<Map<String,String>> resultList = new ArrayList<Map<String,String>>();
		try {
			if(isCount){
				page.setTotalCount(count(sql,listParma));
				if(page.getPageNum() > page.getPageCount()){
					page.setPageNum(page.getPageCount());
				}
			}
			String _pageHandle = "select dt.*,rownum from (select dataTable.*, rownum as rnum from ( #SQL# ) dataTable where rownum <=  #ENDINDEX# ) dt where rnum > #BEGININDEX#";//InitConstants.getInstance().getString("pageHander");
			_pageHandle = _pageHandle.replace("#SQL#", sql);
			_pageHandle = _pageHandle.replace("#BEGININDEX#", "" + page.getBeginIndex());
			_pageHandle = _pageHandle.replace("#ENDINDEX#", "" + page.getEndIndex());
			resultList = (List<Map<String, String>>)doQuery(_pageHandle,listParma);
			page.setData(resultList);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return resultList;
	}
    /**
     * 查询条数
     * @param sql
     * @return
     * @throws Exception
     */
    public static int count(String sql,List<Object> listParma) throws Exception{
    	List<Map<String,String>> list = new ArrayList<Map<String,String>>();        
		StringBuffer sb = new StringBuffer("SELECT count(1) as count FROM ").append("(");
		sb.append(sql).append(")");		
		list=doQuery(sb.toString(),listParma);
		if(list.size()>0){
			return Integer.parseInt(list.get(0).get("count"));
		}
		return 0;
    }
 
    /**
     * 查询条数
     * @param sql
     * @return
     * @throws Exception
     */
    public static int getCount(String sql,List<Object> listParma) throws Exception{
    	List<Map<String,String>> list = new ArrayList<Map<String,String>>();        
		StringBuffer sb = new StringBuffer("SELECT count(1) as count FROM ").append(sql);		
		list=doQuery(sb.toString(),listParma);
		if(list.size()>0){
			return Integer.parseInt(list.get(0).get("count"));
		}
		return 0;
    }
    /**
     * 插入和修改
     * @param allIndex
     * @return
     * @throws WebException
     */
    public static boolean doUpdate(String sql,List<Object> paramList) throws WebException
    {
    	if(printSql()){
	        logger.warn("Enter  getSql: sql[" + sql + "]");
	        logger.info("doUpdate:"+sql);
    	}
        Connection conn = null;
        Statement stmt = null;
        PreparedStatement pstmt = null;
        // ResultSet result = null;
        boolean isSuccess = true;
        String connstr = "";
        try
        {
            connstr = yw.getDefScpid();
            logger.warn("start creating database connection....");
            conn = yw.dbconn(connstr);
            logger.warn("create database connection completed successfully");
            try
            {
            	if(paramList == null || paramList.size() == 0){
            		stmt = yw.getstmt(conn);
            		stmt.executeUpdate(sql);
            	}else {
            		pstmt = yw.getPreStmt(conn, sql);
            		for(int i = 0; i < paramList.size();i++){
            			pstmt.setString(i+1, (String)(paramList.get(i)+""));
            		}
            		pstmt.executeUpdate();
				}
	            if(printSql())
	            	logger.warn("update_sql[" + sql + "]");
            } catch (Exception e)
            {
            	isSuccess=false;
                logger.error("print msgsql error[" + e.getMessage() + "]");
            }

            logger.warn("read data from result completed successfully");
            if (stmt != null)
            {
                stmt.close();
            }
            return isSuccess;
        } catch (ZXYWException e)
        {
            logger.error("Error Exception occurred while checking :", e);
            throw new WebException(e.getMessage());
        } catch (Exception e)
        {
            logger.error("Error Exception occurred while checking :", e);
            throw new WebException(e.getMessage());
        } finally
        {
            logger.warn("start releasing connection...");
            try
            {
                if (stmt != null)
                {
                    stmt.close();
                }
            } catch (Exception e)
            {
                stmt = null;
            }
            try
            {
                if (conn != null)
                {
                    yw.dbfree(conn, connstr);
                }
            } catch (Exception e)
            {
                logger.error("Error Exception occurred while checking :", e);
                throw new WebException(e.getMessage());
            }
        }
    }

    /**
     * 根据序列名称获取序列的下个值
     * @param seqName 序列名称
     * @return
     */
    public static String getSeqNextValue(String seqName){
    	List<Map<String, String>> list=new ArrayList<Map<String,String>>();
    	StringBuffer stringBuffer=new StringBuffer("select ");
    	stringBuffer.append(dbSCP);
    	stringBuffer.append(seqName);
    	stringBuffer.append(".nextval from dual");
    	String nextValueString="";
    	try {
			list=DBUtil.doQuery(stringBuffer.toString(),null);
			if(list.size() > 0){
				nextValueString = list.get(0).get("nextval");
			}
			if(printSql())
				logger.info(seqName+".nextval :"+nextValueString);
		} catch (WebException e) {
			// TODO Auto-generated catch block
			logger.info("get "+seqName+".nextval failed");
			e.printStackTrace();
		}
    	return nextValueString;
    }
    
    /**
     * 获取序列后不够位数,左边默认用 0 补齐
     * @param seqName
     * @param length
     * @return
     */
    public static String getSeqNextValue(String seqName,int length){
    	String nextValueString=getSeqNextValue(seqName);
    	int nextValueStringLength=nextValueString.length();
    	if(length < nextValueStringLength){
    		if(printSql())
    			logger.info("the "+seqName+".nextval's length"+nextValueString.length()+" is longer than you give "+length);
    		return "the "+seqName+".nextval's length"+nextValueString.length()+" is longer than you give "+length;
    	}else{
    		for (int i = 0; i < length - nextValueStringLength; i++) {
    			nextValueString = "0"+nextValueString;
			}
    		return nextValueString;
    	}
    }
    
    /**
     * 获取流水号 时间戳+4位序号。时间戳格式 yyyyMMDDH24miss 序号顺序生成

     * @return
     */
    public static String getStreamingNo(){
		Calendar cal = Calendar.getInstance();
		cal.setLenient(true);
		Date da = cal.getTime();
		String nowDate = new SimpleDateFormat("yyyyMMddHHmmss").format(da);
		String sequence = getSeqNextValue("STREAMINGNO", 4);
		return (nowDate+sequence);
    }
    
    
	/**
	 * 通过国家名称查询国码
	 */
	public static String findCodeByName(String countryName){
		String result="";
		StringBuffer sql = new StringBuffer();
		sql.append(" select countrycode from ").append(dbUMAP).append("v_aspump_service_country");
		if(countryName!=null && !"".equals(countryName))
		{
			sql.append( " where countryName='"+countryName+"'");
		}
		List<Object> listPrarm = new ArrayList<Object>();
//		listPrarm.add(countryName);
		try{
			result = DBUtil.doQuery(sql.toString(),listPrarm).get(0).get("countrycode");
		}catch(WebException e){
			e.printStackTrace();
		}
		return result;
	}

    
//	/**
//	 * 公共调用存储过程
//	 * @param procName  存储过程名称
//	 * @param outParam  输出参数
//	 * @param inParams  输入参数列表
//	 * @return    ProcReturn 输出参数对象
//	 */
//	public static ProcReturn  doExecProc(String procName, ProcReturn outParam ,Object ...inParams) throws WebException{
//		
//        logger.warn("start collect...");
//        logger.warn("calling parameters: inParams[" + inParams + "]");
//
//
//        int ret = -1;
//        Connection conn = null;
//        CallableStatement stmt = null;
//        ResultSet result = null;
//        StringBuffer sql = new StringBuffer("");
//        String connstr = "";
//
//        try
//        {
//            if (ywaccess.Ver_DB == 1)
//            { // sybase
//                sql = sql.append("exec " + dbSCP);
//            } else if (ywaccess.Ver_DB == 2)
//            { // oracle
//                sql = sql.append("{call " + dbSCP);
//            }
//            sql.append(procName+"(");
//    		for (int i = 0 ; i<inParams.length;i++) {
//    			sql.append("?,");	
//    		}
//    		sql.append("?,?) }");
//    		
//    		System.out.println("===="+sql);
//            connstr = yw.getDefScpid();
//            logger.info("start creating database connection....");
//            conn = yw.dbconn(connstr);
//            logger.info("create database connection completed successfully");
//            stmt = yw.getCallStmt(conn, sql.toString());
//            for (int i = 0 ; i<inParams.length;i++) {
//            	stmt.setString(i+1,(String)inParams[i]);
//            }
//			stmt.registerOutParameter(inParams.length+1, Types.VARCHAR);
//			stmt.registerOutParameter(inParams.length+2, Types.VARCHAR);
//            Object[] params = inParams;
//            try
//            {
//                ywaccess yw = new ywaccess();
//                String msg = "";
//                msg = yw.getPreparedSQL(sql.toString(), params);
//                logger.warn("getcollect_sql[" + msg + "]");
//            } catch (Exception e)
//            {
//                logger.error("print msgsql error[" + e.getMessage() + "]");
//            }
//            if (ywaccess.Ver_DB == 1)
//            { // sybase
//                result = stmt.executeQuery();
//                logger.warn("execute SQL completed successfully,start reading data from result...");
//
//                if (result.next())
//                {
//                    ret = result.getInt(1);
//                }
//            } else if (ywaccess.Ver_DB == 2)
//            { // oracle
//                result = stmt.executeQuery();
//                logger.warn("execute SQL completed successfully,start reading data from result...");
//    			outParam.setResultcode(stmt.getString(inParams.length+1));
//    			outParam.setResultmsg(stmt.getString(inParams.length+2));
//            }
//            logger.warn("read data from result completed successfully");
//            if (result != null)
//            {
//                result.close();
//            }
//            if (stmt != null)
//            {
//                stmt.close();
//            }
//            logger.warn("return ret[" + ret + "]");
//            return outParam;
//        } catch (ZXYWException e)
//        {
//            logger.error("Error Exception occurred while collect", e);
//            throw new WebException("20002");
//        } catch (SQLException e)
//        {
//            logger.error("Error Exception occurred while collect," + e.getMessage(), e);
//            // 任务执行失败,请与系统管理员联系20002
//            throw new WebException("20002");
//        } finally
//        {
//            logger.info("start releasing connection...");
//            try
//            {
//                if (stmt != null)
//                {
//                    stmt.close();
//                }
//            } catch (Exception e)
//            {
//                stmt = null;
//            }
//            try
//            {
//                if (conn != null)
//                {
//                	yw.dbfree(conn, connstr);
//                }
//            } catch (Exception e)
//            {
//                logger.error("Error Exception occurred while collect," + e.getMessage());
//                // 任务执行失败,请与系统管理员联系20002
//                throw new WebException("20002");
//            }
//            logger.info("release connection completed successfully");
//            logger.warn("collect completed.");
//        }
//	}


    public static void main(String[] args) {
		try {
			//测试查询
//			List<Map<String,String>> list=DBUtils.doQuery("select EAName EANAME from "+ywaccess.dbSCP+"ea where eaprovidername= '111'");
//			for(int i=0;i<list.size();i++){
//				System.out.println(list.get(i).get("eaname"));
//			}
//			测试更新
//			boolean flag=DBUtils.doUpdate("update "+ywaccess.dbSCP+"application set app_type='22223333' where app_id='11111111'");
//			System.out.println(flag);
//			DBUtils.doUpdate("delete from "+ywaccess.dbSCP+"application where app_id='1'");
//			System.out.println(DBUtil.doQuery("select count(1) from "+ywaccess.dbSCP+"developer"));;
//			List<Map<String,String>> list=DBUtils.handlePage(new Page(1,2), "select EAName EANAME from "+ywaccess.dbSCP+"ea", true);
//			System.out.println(list.size());
//			System.out.println(DBUtil.getSeqNextValue("aspdev_aspidseq",12));
			System.out.println(DBUtil.findCodeByName("Mali"));
			
			
			
//			Application application = new Application();
//			application.setAppid("1'1'1'");
//			application.setAppname("1");
//			application.setStatus("1");
//			application.setWorkflow("1");
//			application.setWorkflowstatus("2");
//			application.setDescription("fasdfasd&gg1111ggg");
//			application.setCapabilityflag("1");
//			application.setApplicationcategory("fdsafa");
//			application.setRegisterday("fdaf");
//			application.setAspid("aspd");
//			application.setFlag("1");
//			application.setImgurl("fdsafd");
//			AppServiceArea appServiceArea = new AppServiceArea();
//			appServiceArea.setAppid("123");
//			appServiceArea.setServiceCountry("234");
//			List<AppServiceArea> appServiceAreas = new ArrayList<AppServiceArea>();
//			appServiceAreas.add(appServiceArea);
//			application.setAppServiceAreaList(appServiceAreas);
//			new DBUtil().applyApp(application);
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

ywaccess.java

package com.zte.aspportal.comm.db;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.Map;

import org.apache.log4j.Logger;

import com.zte.aspportal.comm.exception.WebException;
import com.zte.zxywpub.ZXYWException;
import com.zte.zxywpub.zxdb_access;

public class ywaccess extends zxdb_access
{

    public static final Logger logger = Logger.getLogger(ywaccess.class);
    // These vars you can change,but you must javac after change.
    protected static final int SYSUSERTYPE = 4;

    protected static String DBMacro04 = "";
    protected static String DBMacro05 = "";
    protected static String DBMacro06 = "";
    protected static String DBMacro12 = "";
    protected static String DBMacro13 = "";

    protected static String serviceKey = "gsm80";
    public static String dbSCP = "aspdev.";
    public static String dbUMAP = "zxdbm_umap.";
    public static String dbWAP = "wap.";
    public static String dbSYS = "zxinsys.";
    private static String defScpConn = "133";
    public static int Ver_DBTYPE = Ver_DB;
    protected static String tblRingGroupInfo = "s50ringgroupinfo0";
    protected static String tblTimeCallingNum = "s50timecallingnum0";

    private static ArrayList scplist = new ArrayList();
    private static Map map = new HashMap();
    private static final Object lock = new Object();
    private final String CACHNAME_ERRORMESSAGE = "errormessagemap";
    private final String CACHNAME_PARA = "para";
    private final static String CACHNAME_MIMETYPE = "mimetype";

    // 缺省主scp配置的卡前缀
    final static String cardprefix = "1112";

    /**
     * 最大查询记录条数。 这个变量不自动起作用,需要各个方法自己调用。
     */
    protected static int maxrows = 5000;

    // ywaccess的构建器
    public ywaccess()
    {
        if (Ver_DB == 1)
        { // sybase
            DBMacro04 = "isnull(";
            DBMacro05 = ",' ')";
            DBMacro06 = ",0)";
            DBMacro12 = "convert(varchar(10), ";
            DBMacro13 = ",102)";
            dbSCP = "zxdbg_80.dbo.";
            dbUMAP = "zxdbm_umap.dbo.";
            dbWAP = "wap.dbo.";
            dbSYS = "zxinsys.dbo.";
        } else if (Ver_DB == 2)
        { // oracle
            DBMacro04 = "nvl(";
            DBMacro05 = ",' ')";
            DBMacro06 = ",0)";
            DBMacro12 = "TO_CHAR(";
            DBMacro13 = ",'YYYY.MM.DD')";
        }
        try
        {
            defScpConn = getDefScpid();
        } catch (WebException e)
        {
        }
    }

    /**
     * 得到scp服务器的ip地址
     *
     * @param scpid
     *            String
     * @return String
     * @throws ZXYWException
     */
    public String getScpIP(String scpid) throws ZXYWException
    {
        logger.warn("start getting scp ip...");
        logger.warn("calling parameters: scpid[" + scpid + "]");
        Connection conn = null; // 数据库连接
        PreparedStatement stmt = null;
        ResultSet rs = null;
        String bRet = "";
        String sSql = "select distinct ipaddr from zxinsys." + DBMacro01 + "zxin_device where deviceid=" + scpid;
        try
        {
            logger.info("start creating database connection....");
            conn = dbconn(smpconnstr);
            logger.info("create database connection completed successfully");
            stmt = getPreStmt(conn, sSql);
            logger.warn("start executing SQL:" + sSql);
            rs = executeQuery(stmt);
            logger.warn("execute SQL completed successfully!start reading data from result...");

            if (rs.next())
            {
                bRet = rs.getString(1).trim();
            }
            logger.warn("read data from result completed successfully");
            rs.close();
        } catch (Exception es)
        {
            Strmsg = "Qu get op Pwd:" + es.getMessage();
           // if  == 1)
          //  {
                Strmsg = Strmsg + " ErrQu: " + sSql;
          //  }
            logger.error("Error Exception occurred while getting scp ip," + Strmsg, es);
            throw new ZXYWException("zxdb_access.getZXPwd(): " + Strmsg);
        } finally
        {
            logger.info("start releasing connection...");
            try
            {
                if (stmt != null)
                {
                    stmt.close();
                }
            } catch (Exception e)
            {
            }
            try
            {
                if (conn != null)
                {
                    dbfree(conn, smpconnstr);
                }
            } catch (Exception e)
            {
                logger.error("Error Exception occurred while getting scp ip," + Strmsg, e);
                throw new ZXYWException("zxdb_access.getDEVSmp(): " + Strmsg);
            }
            logger.info("release connection completed successfully");
            logger.warn("getting scp ip completed.");
        }
        logger.warn("return String[" + bRet + "]");
        return bRet;
    }

    /**
     * 获取某用户所在的scp
     *
     * @param usernumber
     *            String
     * @return String
     * @throws WebException
     */
    public String getScpid(String usernumber) throws WebException
    {
        logger.warn("start getting scp id...");
        logger.warn("calling parameters: userNumber[" + usernumber + "]");
        String tmp = "";
        try
        {
            tmp = super.getScpid(serviceKey, usernumber);
        } catch (Exception e)
        {
            logger.error("Error Exception occurred while getting scp id," + e.getMessage(), e);
            throw new WebException(e.getMessage());
        }
        if (tmp == null || tmp.equals(""))
        {
            tmp = defScpConn;
        }
        if (tmp == null || tmp.equals(""))
        {
            logger.error("Error Exception occurred while getting scp id");
            // 系统没有该号码的号段!20003
            throw new WebException("20003");
        }
        logger.warn("getting scp id completed.");
        logger.warn("return String[" + tmp + "]");
        return tmp;
    }

    /**
     * 获取scp列表,在第一次获取时将主scp排在第一位
     *
     * @return ArrayList
     * @throws WebException
     */
    public ArrayList getScpList() throws WebException
    {
        logger.warn("start getting scp list...");
        if (scplist != null)
        {
            if (scplist.size() > 0)
            {
                return scplist;
            }
        }
        try
        {
            scplist = super.getScplist(serviceKey);
        } catch (Exception e)
        {
            logger.error("Error Exception occurred while getting scp list," + e.getMessage(), e);
            throw new WebException(e.getMessage());
        }

        if (scplist == null || scplist.size() == 0)
        {
            logger
                    .error("Error Exception occurred while getting scp list,cannot find scp,please make sure business is load");
            // 系统没有配置号段!20005
            throw new WebException("20005");
        }
        // 获取主scp
        String scpdef = this.getDefScpid();
        if (!scpdef.equals(""))
        {
            ArrayList scpnew = new ArrayList();
            scpnew.add(scpdef);
            for (int i = 0; i < scplist.size(); i++)
            {
                String tmp = (String) scplist.get(i);
                if (!tmp.equals(scpdef))
                {
                    scpnew.add(tmp);
                }
            }
            scplist = scpnew;
        }
        logger.warn("getting scp list completed.");
        if (scplist != null)
        {
            logger.warn("return ArrayList[" + scplist.size() + "]");
        }
        return scplist;
    }

    /**
     * 公用函数,获取smp上ser_pstn51_maxindex表中的索引值
     *
     * @param bflag
     *            索引序号
     * @return int 索引值
     * @exception WebException
     *                数据库错误,抛出此异常。
     * @author mgb
     * @version 2004-07-27
     */
    public int getMaxIndex(int bflag) throws WebException, ZXYWException
    {
        logger.warn("start getting max index...");
        logger.warn("calling parameters: bflag[" + bflag + "]");
        Connection conn = null;
        CallableStatement stmt = null;
        ResultSet result = null;
        int ret = 0;
        String connstr = "";
        try
        {
            String sql = "";
            if (super.Ver_DB == 1)
            { // sybase
                sql = "exec " + DBsmp + "sp_pstn51_getmaxvalue ?,?,?";
            } else if (super.Ver_DB == 2)
            { // oracle
                sql = "{call " + DBsmp + "sp_pstn51_getmaxvalue(?,?,?)}";
            }
            connstr = smpconnstr;
            logger.info("start creating database connection....");
            conn = super.dbconn(connstr);
            logger.info("create database connection completed successfully");
            logger.warn("start executing SQL:" + sql);
            stmt = super.getCallStmt(conn, sql);
            logger.warn("execute SQL completed successfully!start reading data from result...");

            stmt.setInt(1, bflag);
            stmt.setInt(2, 1);
            stmt.registerOutParameter(3, java.sql.Types.INTEGER);
            logger.warn("start executing SQL:" + sql + "[" + bflag + "[1]");
            if (super.Ver_DB == 1)
            { // sybase
                result = stmt.executeQuery();
                logger.warn("execute SQL completed successfully!start reading data from result...");

                if (result.next())
                {
                    ret = result.getInt(1);
                }
            } else if (super.Ver_DB == 2)
            { // oracle
                stmt.executeQuery();
                logger.warn("execute SQL completed successfully!start reading data from result...");

                ret = stmt.getInt(3);
            }
            logger.warn("read data from result completed successfully");
            if (result != null)
            {
                result.close();
            }
            if (stmt != null)
            {
                stmt.close();
            }
            if (ret == 0)
            {
                logger.error("Error Exception occurred while getting max index,smp gex index error");
                // smp获取索引失败20006
                throw new WebException("20006");
            }
        } catch (WebException e)
        {
            logger.error("Error Exception occurred while getting max index", e);
            throw e;
        } catch (ZXYWException e)
        {
            logger.error("Error Exception occurred while getting max index", e);
            throw e;
        } catch (SQLException e)
        {
            logger.error("Error Exception occurred while getting max index," + e.getMessage(), e);
            // 任务执行失败,请与系统管理员联系!20002
            throw new WebException("20002");
        } finally
        {
            logger.info("start releasing connection...");
            try
            {
                if (stmt != null)
                {
                    stmt.close();
                }
            } catch (Exception e)
            {
                stmt = null;
            }
            try
            {
                if (conn != null)
                {
                    super.dbfree(conn, connstr);
                }
            } catch (Exception e)
            {
                logger.error("Error Exception occurred while getting max index," + e.getMessage(), e);
                throw new WebException(e.getMessage());
            }
            logger.info("release connection completed successfully");
            logger.warn("getting max index completed.");
        }
        logger.warn("return int[" + ret + "]");
        return ret;
    }

    /**
     * 公用函数,获取smp上ser_pstn51_maxindex表中的索引值
     *
     * @param bflag
     *            索引序号
     * @return int 索引值
     * @exception WebException
     *                数据库错误,抛出此异常。
     * @author gs 为在一级分类已有铃音的情况下增加二级分类专用
     * @version 2006-06-13
     */
    public int getMaxIndex1(int bflag) throws WebException, ZXYWException
    {
        logger.warn("start getting max index...");
        logger.warn("calling parameters: bflag[" + bflag + "]");
        Connection conn = null;
        CallableStatement stmt = null;
        ResultSet result = null;
        int ret = 0;
        String connstr = "";
        try
        {
            String sql = "";
            if (super.Ver_DB == 1)
            { // sybase
                sql = "exec " + DBsmp + "sp_pstn51_getmaxvalue ?,?,?";
            } else if (super.Ver_DB == 2)
            { // oracle
                sql = "{call " + DBsmp + "sp_pstn51_getmaxvalue(?,?,?)}";
            }
            connstr = smpconnstr;
            logger.info("start creating database connection....");
            conn = super.dbconn(connstr);
            logger.info("create database connection completed successfully");
            logger.warn("start executing SQL:" + sql);
            stmt = super.getCallStmt(conn, sql);
            logger.warn("execute SQL completed successfully!start reading data from result...");

            stmt.setInt(1, bflag);
            stmt.setInt(2, 10);
            stmt.registerOutParameter(3, java.sql.Types.INTEGER);
            logger.warn("start executing SQL:" + sql + "[" + bflag + "][10]");
            if (super.Ver_DB == 1)
            { // sybase
                result = stmt.executeQuery();
                logger.warn("execute SQL completed successfully!start reading data from result...");

                if (result.next())
                {
                    ret = result.getInt(1);
                }
            } else if (super.Ver_DB == 2)
            { // oracle
                stmt.executeQuery();
                logger.warn("execute SQL completed successfully!start reading data from result...");

                ret = stmt.getInt(3);
            }
            logger.warn("read data from result completed successfully");
            if (result != null)
            {
                result.close();
            }
            if (stmt != null)
            {
                stmt.close();
            }
            if (ret == 0)
            {
                logger.error("Error Exception occurred while getting max index,smp get index error");
                // smp获取索引失败20006
                throw new WebException("20006");
            }
        } catch (WebException e)
        {
            logger.error("Error Exception occurred while getting max index", e);
            throw e;
        } catch (ZXYWException e)
        {
            logger.error("Error Exception occurred while getting max index", e);
            throw e;
        } catch (SQLException e)
        {
            logger.error("Error Exception occurred while getting max index," + e.getMessage(), e);
            // 任务执行失败,请与系统管理员联系!20002
            throw new WebException("20002");
        } finally
        {
            logger.info("start releasing connection...");
            try
            {
                if (stmt != null)
                {
                    stmt.close();
                }
            } catch (Exception e)
            {
                stmt = null;
            }
            try
            {
                if (conn != null)
                {
                    super.dbfree(conn, connstr);
                }
            } catch (Exception e)
            {
                logger.error("Error Exception occurred while getting max index," + e.getMessage(), e);
                throw new WebException(e.getMessage());
            }
            logger.info("release connection completed successfully");
            logger.warn("getting max index completed.");
        }
        logger.warn("return int[" + ret + "]");
        return ret;
    }

    /**
     * 公用函数,获取主scp上s50maxinde表中的索引值
     *
     * @param bflag
     *            索引序号
     * @return int 索引值
     * @exception WebException
     *                数据库错误,抛出此异常。
     * @author mgb
     * @version 2004-07-27
     */
    public int getScpMaxIndex(int bflag) throws WebException, ZXYWException
    {
        logger.warn("start getting scp max index...");
        logger.warn("calling parameters: bflag[" + bflag + "]");
        Connection conn = null;
        CallableStatement stmt = null;
        ResultSet result = null;
        int ret = 0;
        String connstr = "";
        try
        {
            String sql = "";
            if (super.Ver_DB == 1)
            { // sybase
                sql = "exec " + dbSCP + "sp_imp_getmaxvalue ?,?,?";
            } else if (super.Ver_DB == 2)
            { // oracle
                sql = "{call " + dbSCP + "sp_imp_getmaxvalue(?,?,?)}";
            }
            connstr = this.getDefScpid();
            logger.info("start creating database connection....");
            conn = super.dbconn(connstr);
            logger.info("create database connection completed successfully");
            logger.warn("start executing SQL:" + sql);
            stmt = super.getCallStmt(conn, sql);
            logger.warn("execute SQL completed successfully!start reading data from result...");

            stmt.setInt(1, bflag);
            stmt.setInt(2, 1);
            stmt.registerOutParameter(3, java.sql.Types.INTEGER);
            logger.warn("start executing SQL:" + sql + "[" + bflag + "][1]");
            if (super.Ver_DB == 1)
            { // sybase
                result = stmt.executeQuery();
                logger.warn("execute SQL completed successfully!start reading data from result...");

                if (result.next())
                {
                    ret = result.getInt(1);
                }
            } else if (super.Ver_DB == 2)
            { // oracle
                stmt.executeQuery();
                logger.warn("execute SQL completed successfully!start reading data from result...");

                ret = stmt.getInt(3);
            }
            logger.warn("read data from result completed successfully");
            if (result != null)
            {
                result.close();
            }
            if (stmt != null)
            {
                stmt.close();
            }
            if (ret == 0)
            {
                logger.error("Error Exception occurred while getting scp max index,scp get index error");
                // scp获取索引失败20007
                throw new WebException("20007");
            }
        } catch (WebException e)
        {
            logger.error("Error Exception occurred while getting scp max index", e);
            throw e;
        } catch (ZXYWException e)
        {
            logger.error("Error Exception occurred while getting scp max index", e);
            throw e;
        } catch (SQLException e)
        {
            logger.error("Error Exception occurred while getting scp max index," + e.getMessage(), e);
            throw new WebException("任务执行失败,请与系统管理员联系!");
        } finally
        {
            logger.info("start releasing connection...");
            try
            {
                if (stmt != null)
                {
                    stmt.close();
                }
            } catch (Exception e)
            {
                stmt = null;
            }
            try
            {
                if (conn != null)
                {
                    super.dbfree(conn, connstr);
                }
            } catch (Exception e)
            {
                logger.error("Error Exception occurred while getting scp max index," + e.getMessage(), e);
                throw new WebException(e.getMessage());
            }
            logger.info("release connection completed successfully");
            logger.warn("getting scp max index completed.");
        }
        logger.warn("return int[" + ret + "]");
        return ret;
    }

    /**
     * 公用函数,采用存储过程在各scp上执行
     *
     * @param sql
     *            --------------可执行的存储过程字符串
     * @param ArrayList
     *            --------存储过程的参数值 <br>
     *            入参ArrayList的对象hashtable <br>
     *            <i>type--------数据类型 0:int 其余:string</i> <br>
     *            <i>value-------数据值/i>
     * @return ArrayList 返回各scp的执行情况,如果第一个scp执行失败,则直接退出 <br>
     *         <i>scp--------scp</i> <br>
     *         <i>flag-------操作标志/i> <br>
     *         <i>reason-----失败原因</i>
     * @author mgb
     * @version 2004-07-27
     */
    public ArrayList upDateAllScp(String sSql, ArrayList paralist) throws WebException
    {
        logger.warn("start updateing all scp...");
        logger.warn("calling parameters: sSql[" + sSql + "]");
        Connection conn = null;
        CallableStatement stmt = null;
        ResultSet result = null;
        String connstr = "";
        ArrayList vet = new ArrayList();
        int ret = -1;
        Hashtable hash = null;
        Hashtable tmp = null;
        String failres = "";
        ArrayList scplist = null;
        try
        {
            scplist = getScpList();
        } catch (Exception e)
        {
            logger.error("Error Exception occurred while updateing all scp," + e.getMessage(), e);
            throw new WebException(e.getMessage());
        }

        for (int j = 0; j < scplist.size(); j++)
        {
            connstr = (String) scplist.get(j);
            failres = "";
            ret = -1;
            try
            {
                logger.info("start creating database connection....");
                conn = super.dbconn(connstr);
                logger.info("create database connection completed successfully");
                stmt = super.getCallStmt(conn, sSql);
                int i = 0;
                String params = "";
                for (i = 0; i < paralist.size(); i++)
                {
                    hash = (Hashtable) paralist.get(i);
                    params += (String) hash.get("value") + ";";
                    if (((String) hash.get("type")).equals("0"))
                    {
                        stmt.setInt(i + 1, Integer.parseInt((String) hash.get("value")));
                    } else
                    {
                        stmt.setString(i + 1, (String) hash.get("value"));
                    }
                }
                logger.warn("updateing all scp input params:" + params);
                i = i + 1;
                stmt.registerOutParameter(i, java.sql.Types.INTEGER);
                ret = -1;
                logger.warn("start executing SQL:" + sSql);
                if (super.Ver_DB == 1)
                { // sybase
                    result = stmt.executeQuery();
                    logger.warn("execute SQL completed successfully!start reading data from result...");

                    if (result.next())
                    {
                        ret = result.getInt(1);
                    }
                } else if (super.Ver_DB == 2)
                { // oracle
                    stmt.executeQuery();
                    logger.warn("execute SQL completed successfully!start reading data from result...");

                    ret = stmt.getInt(i);
                }
                logger.warn("updateing all scp output params:" + ret);
                logger.warn("read data from result completed successfully");
                if (result != null)
                {
                    result.close();
                }
                if (stmt != null)
                {
                    stmt.close();
                }
                if (ret > 0)
                {
                    failres = this.getStrmsg(ret);
                }
            } catch (ZXYWException e)
            {
                failres = e.getMessage();
            } catch (SQLException e)
            {
                logger.info("Error Exception occurred while updateing all scp,", e);
                // 数据库执行失败,请与系统管理员联系!20008
                failres = GetResourceStr.getResourceStr("20008");
            } finally
            {
                logger.info("start releasing connection...");
                try
                {
                    if (stmt != null)
                    {
                        stmt.close();
                    }
                } catch (Exception e)
                {
                    stmt = null;
                }
                try
                {
                    if (conn != null)
                    {
                        super.dbfree(conn, connstr);
                    }
                } catch (Exception e)
                {
                }
                logger.info("release connection completed successfully");
            }
            // 填写日志
           // if (!failres.equals("") && super.Debug > 0)
           // {
                String sSqlLog = getSqlLog(sSql, paralist);
                logger.warn("[" + connstr + "]excute:" + sSqlLog + " result:" + failres + "[" + ret + "]");
          //  }
            tmp = new Hashtable();
            tmp.put("scp", connstr);
            tmp.put("result", ret + "");
            tmp.put("reason", failres);
            vet.add(tmp);
            if (ret < 0 || (j == 0 && ret > 0))
            { // 第一个scp操作出错则退出系统;
                break;
            }
        }
        logger.warn("updateing all scp completed.");
        if (vet != null)
        {
            logger.warn("return Vector[" + vet.size() + "]");
        }
        return vet;
    }

    /**
     * 公用函数,采用存储过程在各scp上执行
     *
     * @param sql
     *            --------------可执行的存储过程字符串
     * @param ArrayList
     *            --------存储过程的参数值 <br>
     *            入参ArrayList的对象hashtable <br>
     *            <i>type--------数据类型 0:int 其余:string</i> <br>
     *            <i>value-------数据值/i>
     * @return ArrayList 返回各scp的执行情况,如果第一个scp执行失败,则直接退出 <br>
     *         <i>scp--------scp</i> <br>
     *         <i>flag-------操作标志/i> <br>
     *         <i>reason-----失败原因</i>
     * @author mgb
     * @version 2004-07-27
     */
    public boolean AddAllGroupScp(String sSql, ArrayList paralist) throws WebException
    {
        logger.warn("start adding all group scp with calling parameters: sSql[" + sSql + "] and following paralist...");
        logger.warn(paralist);
        Connection conn = null;
        CallableStatement stmt = null;
        ResultSet result = null;
        String connstr = "";
        int ret = -1;
        boolean bflag = true;
        Hashtable hash = null;
        String failres = "";
        ArrayList scplist = null;
        try
        {
            scplist = getScpList();
        } catch (Exception e)
        {
            logger.error("Error Exception occurred while adding all group scp," + e.getMessage(), e);
            throw new WebException(e.getMessage());
        }

        for (int j = 0; j < scplist.size(); j++)
        {
            connstr = (String) scplist.get(j);
            ret = -1;
            try
            {
                logger.info("start creating database connection....");
                conn = super.dbconn(connstr);
                logger.info("create database connection completed successfully");
                stmt = super.getCallStmt(conn, sSql);
                int i = 0;
                for (i = 0; i < paralist.size(); i++)
                {
                    hash = (Hashtable) paralist.get(i);
                    if (((String) hash.get("type")).equals("0"))
                    {
                        stmt.setInt(i + 1, Integer.parseInt((String) hash.get("value")));
                    } else
                    {
                        stmt.setString(i + 1, (String) hash.get("value"));
                    }
                }
                i = i + 1;
                stmt.registerOutParameter(i, java.sql.Types.INTEGER);
                ret = -1;
                logger.warn("start executing SQL:" + sSql);
                if (super.Ver_DB == 1)
                { // sybase
                    result = stmt.executeQuery();
                    logger.warn("execute SQL completed successfully!start reading data from result...");

                    if (result.next())
                    {
                        ret = result.getInt(1);
                    }
                } else if (super.Ver_DB == 2)
                { // oracle
                    stmt.executeQuery();
                    logger.warn("execute SQL completed successfully!start reading data from result...");

                    ret = stmt.getInt(i);
                }
                logger.warn("read data from result completed successfully");
                if (result != null)
                {
                    result.close();
                }
                if (stmt != null)
                {
                    stmt.close();
                }
                if (ret > 0)
                {
                    failres = this.getStrmsg(ret);
                    logger.error("Error Exception occurred while adding all group scp,[" + ret + "]" + failres);
                    throw new WebException(connstr + ":" + failres);
                }
            } catch (ZXYWException e)
            {
                failres = e.getMessage();
                logger.error("Error Exception occurred while adding all group scp," + failres, e);
                throw new WebException(failres);
            } catch (SQLException e)
            {
                // "数据库执行失败,请与系统管理员联系!"20008
                failres = connstr + ":" + GetResourceStr.getResourceStr("20008");
                logger.error("Error Exception occurred while adding all group scp," + failres + "," + e.getMessage());
                throw new WebException(failres);
            } finally
            {
                logger.info("start releasing connection...");
                try
                {
                    if (stmt != null)
                    {
                        stmt.close();
                    }
                } catch (Exception e)
                {
                    stmt = null;
                }
                try
                {
                    if (conn != null)
                    {
                        super.dbfree(conn, connstr);
                    }
                } catch (Exception e)
                {
                    logger.warn("return boolean[false]");
                    return false;
                }
                logger.info("release connection completed successfully");
                logger.warn("adding all group scp completed.");
            }

            if (ret < 0)
            {
                bflag = false;
                break;
            }
        }
        logger.warn("return boolean[" + bflag + "]");
        return bflag;
    }

    /**
     * 公用函数,采用存储过程在各scp上执行
     *
     * @param sql
     *            --------------可执行的存储过程字符串
     * @param ArrayList
     *            --------存储过程的参数值 <br>
     *            入参ArrayList的对象hashtable <br>
     *            <i>type--------数据类型 0:int 其余:string</i> <br>
     *            <i>value-------数据值/i>
     * @return ArrayList 返回各scp的执行情况,如果有一个scp执行失败,则直接退出 <br>
     *         <i>scp--------scp</i> <br>
     *         <i>flag-------操作标志/i> <br>
     *         <i>reason-----失败原因</i>
     * @author mgb
     * @version 2004-07-27
     */
    public boolean delAllGroupScp(String sSql, ArrayList paralist) throws WebException
    {
        logger.warn("start deleting all group scp...");
        logger.warn("calling parameters: sSql[" + sSql + "]");
        Connection conn = null;
        CallableStatement stmt = null;
        ResultSet result = null;
        String connstr = "";
        ArrayList vet = new ArrayList();
        int ret = -1;
        boolean bflag = true;
        Hashtable hash = null;
        Hashtable tmp = null;
        String failres = "";
        ArrayList scplist = null;
        try
        {
            scplist = getScpList();
        } catch (Exception e)
        {
            logger.error("Error Exception occurred while deleting all group scp," + e.getMessage(), e);
            throw new WebException(e.getMessage());
        }

        for (int j = 0; j < scplist.size(); j++)
        {
            connstr = (String) scplist.get(j);
            failres = "";
            ret = -1;
            try
            {
                logger.info("start creating database connection....");
                conn = super.dbconn(connstr);
                logger.info("create database connection completed successfully");
                stmt = super.getCallStmt(conn, sSql);
                int i = 0;
                for (i = 0; i < paralist.size(); i++)
                {
                    hash = (Hashtable) paralist.get(i);
                    if (((String) hash.get("type")).equals("0"))
                    {
                        stmt.setInt(i + 1, Integer.parseInt((String) hash.get("value")));
                    } else
                    {
                        stmt.setString(i + 1, (String) hash.get("value"));
                    }
                }
                i = i + 1;
                stmt.registerOutParameter(i, java.sql.Types.INTEGER);
                ret = -1;
                logger.warn("start executing SQL:" + sSql);
                if (super.Ver_DB == 1)
                { // sybase
                    result = stmt.executeQuery();
                    logger.warn("execute SQL completed successfully!start reading data from result...");

                    if (result.next())
                    {
                        ret = result.getInt(1);
                    }
                } else if (super.Ver_DB == 2)
                { // oracle
                    stmt.executeQuery();
                    logger.warn("execute SQL completed successfully!start reading data from result...");

                    ret = stmt.getInt(i);
                }
                logger.warn("read data from result completed successfully");
                if (result != null)
                {
                    result.close();
                }
                if (stmt != null)
                {
                    stmt.close();
                }
                if (ret > 0 && ret != 9301)
                {
                    failres = this.getStrmsg(ret);
                    logger.error("Error Exception occurred while deleting all group scp," + connstr + ":" + failres);
                    throw new WebException(connstr + ":" + failres);
                }
            } catch (ZXYWException e)
            {
                failres = connstr + ":" + e.getMessage();
                logger.error("Error Exception occurred while deleting all group scp," + failres, e);
                throw new WebException(failres);

            } catch (SQLException e)
            {
                logger.error("Error Exception occurred while deleting all group scp," + e.getMessage(), e);
                // "数据库执行失败!"20009
                throw new WebException(connstr + GetResourceStr.getResourceStr("20009"));

            } finally
            {
                logger.info("start releasing connection...");
                try
                {
                    if (stmt != null)
                    {
                        stmt.close();
                    }
                } catch (Exception e)
                {
                    stmt = null;
                }
                try
                {
                    if (conn != null)
                    {
                        super.dbfree(conn, connstr);
                    }
                } catch (Exception e)
                {
                    logger.warn("return boolean[false]");
                    return false;
                }
                logger.info("release connection completed successfully");
                logger.warn("deleting all group scp completed.");
            }
            if (ret < 0)
            {
                bflag = false;
                break;
            }

        }
        logger.warn("return boolean[" + bflag + "]");
        return bflag;
    }

    /**
     * 公用函数,采用存储过程在各scp上执行
     *
     * @param sql
     *            --------------可执行的存储过程字符串
     * @param ArrayList
     *            --------存储过程的参数值 <br>
     *            入参ArrayList的对象hashtable <br>
     *            <i>type--------数据类型 0:int 其余:string</i> <br>
     *            <i>value-------数据值/i>
     * @return ArrayList 返回各scp的执行情况,如果第一个scp执行失败,则直接退出 <br>
     *         <i>scp--------scp</i> <br>
     *         <i>flag-------操作标志/i> <br>
     *         <i>reason-----失败原因</i>
     * @author mgb
     * @version 2004-07-27
     */
    public ArrayList upDateAllScpForFee(int opcode, String sSql, ArrayList paralist) throws WebException
    {
        logger.warn("start updating all scp for fee...");
        logger.warn("calling parameters: opcode[" + opcode + "]sSql[" + sSql + "]");
        Connection conn = null;
        CallableStatement stmt = null;
        ResultSet result = null;
        String connstr = "";
        ArrayList vet = new ArrayList();
        int ret = -1;
        Hashtable hash = null;
        Hashtable tmp = null;
        String failres = "";
        ArrayList scplist = null;
        try
        {
            scplist = getScpList();
        } catch (Exception e)
        {
            logger.error("Error Exception occurred while updating all scp for fee," + e.getMessage(), e);
            throw new WebException(e.getMessage());
        }

        for (int j = 0; j < scplist.size(); j++)
        {
            connstr = (String) scplist.get(j);
            if (opcode == 1)
            {
                if (connstr.equals(getDefScpid()))
                {
                    failres = "";
                    tmp = new Hashtable();
                    tmp.put("scp", connstr);
                    tmp.put("result", "0");
                    tmp.put("reason", failres);
                    vet.add(tmp);
                    continue;
                }
            }

            failres = "";
            ret = -1;
            try
            {
                logger.info("start creating database connection....");
                conn = super.dbconn(connstr);
                logger.info("create database connection completed successfully");
                stmt = super.getCallStmt(conn, sSql);
                int i = 0;
                for (i = 0; i < paralist.size(); i++)
                {
                    hash = (Hashtable) paralist.get(i);
                    if (((String) hash.get("type")).equals("0"))
                    {
                        stmt.setInt(i + 1, Integer.parseInt((String) hash.get("value")));
                    } else
                    {
                        stmt.setString(i + 1, (String) hash.get("value"));
                    }
                }
                i = i + 1;
                stmt.registerOutParameter(i, java.sql.Types.INTEGER);
                stmt.registerOutParameter(i + 1, java.sql.Types.INTEGER);
                ret = -1;
                logger.warn("start executing SQL:" + sSql);
                if (super.Ver_DB == 1)
                { // sybase
                    result = stmt.executeQuery();
                    logger.warn("execute SQL completed successfully!start reading data from result...");

                    if (result.next())
                    {
                        ret = result.getInt(1);
                    }
                } else if (super.Ver_DB == 2)
                { // oracle
                    stmt.executeQuery();
                    logger.warn("execute SQL completed successfully!start reading data from result...");

                    ret = stmt.getInt(i);
                }
                logger.warn("read data from result completed successfully");
                if (result != null)
                {
                    result.close();
                }
                if (stmt != null)
                {
                    stmt.close();
                }
                if (ret > 0)
                {
                    failres = this.getStrmsg(ret);
                }
            } catch (ZXYWException e)
            {
                failres = e.getMessage();
            } catch (SQLException e)
            {
                logger.info("Error Exception occurred while updating all scp for fee,", e);
                // "数据库执行失败,请与系统管理员联系!"20008
                failres = GetResourceStr.getResourceStr("20008");
            } finally
            {
                logger.info("start releasing connection...");
                try
                {
                    if (stmt != null)
                    {
                        stmt.close();
                    }
                } catch (Exception e)
                {
                    stmt = null;
                }
                try
                {
                    if (conn != null)
                    {
                        super.dbfree(conn, connstr);
                    }
                } catch (Exception e)
                {
                }
                logger.info("release connection completed successfully");

            }
            // 填写日志
           // if (!failres.equals("") && super.Debug > 0)
         //   {
                String sSqlLog = getSqlLog(sSql, paralist);
                logger.warn("[" + connstr + "]excute:" + sSqlLog + " result:" + failres + "[" + ret + "]");
         //   }
            tmp = new Hashtable();
            tmp.put("scp", connstr);
            tmp.put("result", ret + "");
            tmp.put("reason", failres);
            vet.add(tmp);
            if (ret < 0 || (j == 0 && ret > 0))
            { // 第一个scp操作出错则退出系统;
                break;
            }
        }
        if (vet != null)
        {
            logger.warn("return ArrayList[" + vet.size() + "]");
        }
        logger.warn("updating all scp for fee completed.");
        return vet;
    }

    /**
     * 公用函数,采用存储过程在各scp上执行
     *
     * @param sql
     *            --------------可执行的存储过程字符串
     * @param ArrayList
     *            --------存储过程的参数值 <br>
     *            入参ArrayList的对象hashtable <br>
     *            <i>type--------数据类型 0:int 其余:string</i> <br>
     *            <i>value-------数据值/i>
     * @return ArrayList 返回各scp的执行情况,如果第一个scp执行失败,则直接退出 <br>
     *         <i>scp--------scp</i> <br>
     *         <i>flag-------操作标志/i> <br>
     *         <i>reason-----失败原因</i>
     * @author liuxj
     * @version 2008-09-25
     */
    public ArrayList upDateAllScpForCP(int opcode, String sSql, ArrayList paralist) throws WebException
    {
        logger.warn("start updating all scp for cp...");
        logger.warn("calling parameters: opcode[" + opcode + "]sSql[" + sSql + "]");
        Connection conn = null;
        CallableStatement stmt = null;
        ResultSet result = null;
        String connstr = "";
        ArrayList vet = new ArrayList();
        int ret = -1;
        Hashtable hash = null;
        Hashtable tmp = null;
        String failres = "";
        ArrayList scplist = null;
        try
        {
            scplist = getScpList();
        } catch (Exception e)
        {
            logger.error("Error Exception occurred while updating all scp for cp," + e.getMessage(), e);
            throw new WebException();
        }
        for (int j = 0; j < scplist.size(); j++)
        {
            connstr = (String) scplist.get(j);
            if (opcode == 1)
            {
                if (connstr.equals(getDefScpid()))
                {
                    failres = "";
                    tmp = new Hashtable();
                    tmp.put("scp", connstr);
                    tmp.put("result", "0");
                    tmp.put("reason", failres);
                    vet.add(tmp);
                    continue;
                }
            }
            failres = "";
            ret = -1;
            try
            {
                logger.info("start creating database connection....");
                conn = super.dbconn(connstr);
                logger.info("create database connection completed successfully");
                stmt = super.getCallStmt(conn, sSql);
                int i = 0;
                for (i = 0; i < paralist.size(); i++)
                {
                    hash = (Hashtable) paralist.get(i);
                    if (((String) hash.get("type")).equals("0"))
                    {
                        stmt.setInt(i + 1, Integer.parseInt((String) hash.get("value")));
                    } else
                    {
                        stmt.setString(i + 1, (String) hash.get("value"));
                    }
                }
                i = i + 1;
                stmt.registerOutParameter(i, java.sql.Types.INTEGER);
                stmt.registerOutParameter(i + 1, java.sql.Types.INTEGER);
                ret = -1;
                logger.warn("start executing SQL:" + sSql);
                if (super.Ver_DB == 1)
                { // sybase
                    result = stmt.executeQuery();
                    logger.warn("execute SQL completed successfully!start reading data from result...");

                    if (result.next())
                    {
                        ret = result.getInt(1);
                    }
                } else if (super.Ver_DB == 2)
                { // oracle
                    stmt.executeQuery();
                    logger.warn("execute SQL completed successfully!start reading data from result...");

                    ret = stmt.getInt(i);
                }
                logger.warn("read data from result completed successfully");
                if (result != null)
                {
                    result.close();
                }
                if (stmt != null)
                {
                    stmt.close();
                }
                if (ret > 0)
                {
                    failres = this.getStrmsg(ret);
                }
            } catch (ZXYWException e)
            {
                failres = e.getMessage();
            } catch (SQLException e)
            {
                logger.info("Error Exception occurred while updating all scp for cp", e);
                // "数据库执行失败,请与系统管理员联系!"20008
                failres = GetResourceStr.getResourceStr("20008");
            } finally
            {
                logger.info("start releasing connection...");
                try
                {
                    if (stmt != null)
                    {
                        stmt.close();
                    }
                } catch (Exception e)
                {
                    stmt = null;
                }
                try
                {
                    if (conn != null)
                    {
                        super.dbfree(conn, connstr);
                    }
                } catch (Exception e)
                {
                }
                logger.info("release connection completed successfully");

            }
            // 填写日志
        //    if (!failres.equals("") && super.Debug > 0)
         //   {
                String sSqlLog = getSqlLog(sSql, paralist);
                logger.warn("[" + connstr + "]excute:" + sSqlLog + " result:" + failres + "[" + ret + "]");
        //    }
            tmp = new Hashtable();
            tmp.put("scp", connstr);
            tmp.put("result", ret + "");
            tmp.put("reason", failres);
            vet.add(tmp);
            if (ret < 0 || (j == 0 && ret > 0))
            { // 第一个scp操作出错则退出系统;
                break;
            }
        }
        if (vet != null)
        {
            logger.warn("return ArrayList[" + vet.size() + "]");
        }
        logger.warn("updating all scp for cp completed.");
        return vet;
    }

    /**
     * 公用函数,采用存储过程在各scp上执行
     *
     * @param opcode
     *            ----------操作类型 1 增加 2 删除 3 修改
     * @param sql
     *            --------------可执行的存储过程字符串
     * @param ArrayList
     *            --------存储过程的参数值 <br>
     *            入参ArrayList的对象hashtable <br>
     *            <i>type--------数据类型 0:int 其余:string</i> <br>
     *            <i>value-------数据值/i>
     * @return ArrayList 返回各scp的执行情况,如果第一个scp执行失败,则直接退出 <br>
     *         <i>scp--------scp</i> <br>
     *         <i>flag-------操作标志/i> <br>
     *         <i>reason-----失败原因</i>
     * @author mgb
     * @version 2004-07-27
     */
    public ArrayList upDateAllScpforDiscount(int opcode, String sSql, ArrayList paralist) throws WebException
    {
        logger.warn("start updating all scp for discount...");
        logger.warn("calling parameters: opcode[" + opcode + "]sSql[" + sSql + "]");
        Connection conn = null;
        CallableStatement stmt = null;
        ResultSet result = null;
        String connstr = "";
        ArrayList vet = new ArrayList();
        int ret = -1;
        Hashtable hash = null;
        Hashtable tmp = null;
        String failres = "";
        ArrayList scplist = null;
        try
        {
            scplist = getScpList();
            // 如果是增加,不需要在主scp上再次调用
        } catch (Exception e)
        {
            logger.error("Error Exception occurred while updating all scp for discount," + e.getMessage(), e);
            throw new WebException(e.getMessage());
        }

        for (int j = 0; j < scplist.size(); j++)
        {
            connstr = (String) scplist.get(j);
            if (opcode == 1)
            {
                if (connstr.equals(getDefScpid()))
                {
                    tmp = new Hashtable();
                    tmp.put("scp", connstr);
                    tmp.put("result", "0");
                    tmp.put("reason", "");
                    vet.add(tmp);
                    continue;
                }
            }
            failres = "";
            ret = -1;
            try
            {
                logger.info("start creating database connection....");
                conn = super.dbconn(connstr);
                logger.info("create database connection completed successfully");
                stmt = super.getCallStmt(conn, sSql);
                int i = 0;
                for (i = 0; i < paralist.size(); i++)
                {
                    hash = (Hashtable) paralist.get(i);
                    if (((String) hash.get("type")).equals("0"))
                    {
                        stmt.setInt(i + 1, Integer.parseInt((String) hash.get("value")));
                    } else
                    {
                        stmt.setString(i + 1, (String) hash.get("value"));
                    }
                }
                i = i + 1;
                stmt.registerOutParameter(i, java.sql.Types.INTEGER); // 返回值
                stmt.registerOutParameter(i + 1, java.sql.Types.INTEGER); // 套餐索引号
                stmt.registerOutParameter(i + 2, java.sql.Types.VARCHAR); // 套餐ID
                ret = -1;
                logger.warn("start executing SQL:" + sSql);
                if (super.Ver_DB == 1)
                { // sybase
                    result = stmt.executeQuery();
                    logger.warn("execute SQL completed successfully!start reading data from result...");

                    if (result.next())
                    {
                        ret = result.getInt(1);
                    }
                } else if (super.Ver_DB == 2)
                { // oracle
                    stmt.executeQuery();
                    logger.warn("execute SQL completed successfully!start reading data from result...");

                    ret = stmt.getInt(i);
                }
                logger.warn("read data from result completed successfully");
                if (result != null)
                {
                    result.close();
                }
                if (stmt != null)
                {
                    stmt.close();
                }
                if (ret > 0)
                {
                    failres = this.getStrmsg(ret);
                }
            } catch (ZXYWException e)
            {
                logger.info("Error Exception occurred while updating all scp for discount");
                failres = e.getMessage();
            } catch (SQLException e)
            {
                logger.info("Error Exception occurred while updating all scp for discount");
                // 数据库执行失败,请与系统管理员联系!20008
                failres = GetResourceStr.getResourceStr("20008");
            } finally
            {
                logger.info("start releasing connection...");
                try
                {
                    if (stmt != null)
                    {
                        stmt.close();
                    }
                } catch (Exception e)
                {
                    stmt = null;
                }
                try
                {
                    if (conn != null)
                    {
                        super.dbfree(conn, connstr);
                    }
                } catch (Exception e)
                {
                }
                logger.info("release connection completed successfully");

            }
            // 填写日志
         //   if (!failres.equals("") && super.Debug > 0)
         //   {
                String sSqlLog = getSqlLog(sSql, paralist);
                logger.warn("[" + connstr + "]excute:" + sSqlLog + " result:" + failres + "[" + ret + "]");
         //   }
            tmp = new Hashtable();
            tmp.put("scp", connstr);
            tmp.put("result", ret + "");
            tmp.put("reason", failres);
            vet.add(tmp);
            if (ret < 0 || (j == 0 && ret > 0))
            { // 第一个scp操作出错则退出系统;
                break;
            }
        }
        if (vet != null)
        {
            logger.warn("return ArrayList[" + vet.size() + "]");
        }
        logger.warn(" updating all scp for discount completed.");
        return vet;
    }

    /**
     * 获取调用的存储过程日志,为upDateAllScp使用
     *
     * @param sSql
     * @param paralist
     * @return String
     * @author mgb 2004.12.20
     */
    private String getSqlLog(String sSql, ArrayList paralist)
    {
        logger.warn("start getting sql log...");
        logger.warn("calling parameters: sSql[" + sSql + "]");
        String sSqlLog = "";
        Hashtable hash = null;
        if (sSql == null || sSql.length() == 0)
        {
            return sSqlLog;
        }
        sSqlLog = sSql.substring(0, sSql.indexOf("?"));
        for (int i = 0; i < paralist.size(); i++)
        {
            hash = (Hashtable) paralist.get(i);
            String sHead = i == 0 ? " " : ",";
            if (((String) hash.get("type")).equals("0"))
            {
                sSqlLog = sSqlLog + sHead + (String) hash.get("value");
            } else
            {
                sSqlLog = sSqlLog + sHead + "'" + (String) hash.get("value") + "'";
            }
        }
        if (super.Ver_DB == 2)
        { // oracle
            sSqlLog = sSqlLog + "}";
        }
        logger.warn("getting sql log completed.");
        logger.warn("return String[" + sSqlLog + "]");
        return sSqlLog;
    }

    /**
     * 公用函数,在所有的scp上执行sql语句
     *
     * @param sql
     *            --------------可执行的存储过程字符串
     * @param ArrayList
     *            --------存储过程的参数值
     * @return ArrayList 返回各scp的执行情况,如果第一个scp执行失败,则直接退出 <br>
     *         <i>scp--------scp</i> <br>
     *         <i>flag-------操作标志/i> <br>
     *         <i>reason-----失败原因</i>
     * @author mgb
     * @version 2004-07-27
     */
    public ArrayList excuteAllScp(String sSql) throws WebException
    {
        logger.warn("start excuting all scp...");
        logger.warn("calling parameters: sSql[" + sSql + "]");
        Connection conn = null;
        Statement stmt = null;
        String connstr = "";
        ArrayList vet = new ArrayList();
        int ret = 0;
        Hashtable hash = null;
        Hashtable tmp = null;
        String failres = "";
        ArrayList scplist = null;
        try
        {
            scplist = getScpList();
        } catch (Exception e)
        {
            logger.error("Error Exception occurred while excuting all scp," + e.getMessage(), e);
            throw new WebException(e.getMessage());
        }

        for (int j = 0; j < scplist.size(); j++)
        {
            connstr = (String) scplist.get(j);
            failres = "";
            ret = 0;
            try
            {
                logger.info("start creating database connection....");
                conn = super.dbconn(connstr);
                logger.info("create database connection completed successfully");
                stmt = super.getstmt(conn);
                if (super.executeUpdate(sSql, stmt) < 0)
                {
                    ret = -1;
                    // "数据库执行失败,请与系统管理员联系!"20008
                    failres = GetResourceStr.getResourceStr("20008");
                }
                if (stmt != null)
                {
                    stmt.close();
                }
            } catch (ZXYWException e)
            {
                logger.info("Error Exception occurred while excuting all scp");
                ret = -1;
                failres = e.getMessage();
            } catch (SQLException e)
            {
                logger.info("Error Exception occurred while excuting all scp");
                ret = -1;
                // "数据库执行失败,请与系统管理员联系!"20008
                failres = GetResourceStr.getResourceStr("20008");
                ;
            } finally
            {
                logger.info("start releasing connection...");
                try
                {
                    if (stmt != null)
                    {
                        stmt.close();
                    }
                } catch (Exception e)
                {
                    stmt = null;
                }
                try
                {
                    if (conn != null)
                    {
                        super.dbfree(conn, connstr);
                    }
                } catch (Exception e)
                {
                }
                logger.info("release connection completed successfully");
                logger.warn("excuting all scp completed.");
            }
            tmp = new Hashtable();
            tmp.put("scp", connstr);
            tmp.put("result", ret + "");
            tmp.put("reason", failres);
            vet.add(tmp);
            if (j == 0 && ret > 0)
            { // 第一个scp操作出错则退出系统;
                break;
            }
        }
        if (vet != null)
        {
            logger.warn("return ArrayList[" + vet.size() + "]");
        }
        return vet;
    }

    // 获取缺省scp 即为获取deviceid最小scp
    public String getDefScpid() throws WebException
    {
        if (defScpConn != null && !defScpConn.equals(""))
        {
            return defScpConn;
        }
        try
        {
            defScpConn = super.getScpid(serviceKey, cardprefix);
        } catch (Exception e)
        {
            logger.error("Exception occurred while executing getDefScpId method," + e.getMessage(), e);
        }
        return defScpConn;
    }

    /**
     * 根据铃音类型取s50ringcfg表中铃音id前缀长度限制,替代s50parameters表中第32项配置
     *
     * @param ringtype
     *            int
     * @return int
     * @throws WebException
     * @throws ZXYWException
     */
    public int getRidPrelen(int ringtype) throws WebException, ZXYWException
    {
        logger.warn("start getting rid pre len...");
        logger.warn("calling parameters: ringtype[" + ringtype + "]");
        Connection conn = null;
        Statement stmt = null;
        ResultSet result = null;
        int ret = 0;
        String connstr = "";
        try
        {

            connstr = this.getDefScpid();
            String sql = "select ridprelen from " + dbSCP + "s50ringcfg where ringtype=" + ringtype;
            logger.info("start creating database connection....");
            conn = super.dbconn(connstr);
            logger.info("create database connection completed successfully");
            stmt = super.getstmt(conn);
            result = super.executeQuery(sql, stmt);
            if (result.next())
            {
                ret = Integer.parseInt(result.getString(1));
            }
            logger.warn("read data from result completed successfully");
            if (result != null)
            {
                result.close();
            }
            stmt.close();
        } catch (ZXYWException e)
        {
            logger.error("Error Exception occurred while getting rid pre len", e);
            throw e;
        } catch (SQLException e)
        {
            logger.error("Error Exception occurred while getting rid pre len," + e.getMessage(), e);
            // 任务执行失败,请与系统管理员联系!
            throw new WebException("20002");
        } finally
        {
            logger.info("start releasing connection...");
            try
            {
                if (stmt != null)
                {
                    stmt.close();
                }
            } catch (Exception e)
            {
                stmt = null;
            }
            try
            {
                // 关闭数据库资源
                if (conn != null)
                {
                    super.dbfree(conn, connstr);
                }
            } catch (Exception e)
            {
                logger.error("Error Exception occurred while getting rid pre len," + e.getMessage(), e);
                // 任务执行失败,请与系统管理员联系!
                throw new WebException("20002");
            }
            logger.info("release connection completed successfully");
            logger.warn("getting rid pre len completed.");
        }
        logger.warn("return int[" + ret + "]");
        return ret;

    }

    /**
     * 公用函数,采用存储过程在各scp上执行
     *
     * @param sql
     *            --------------可执行的存储过程字符串
     * @param ArrayList
     *            --------存储过程的参数值 <br>
     *            入参ArrayList的对象hashtable <br>
     *            <i>type--------数据类型 0:int 其余:string</i> <br>
     *            <i>value-------数据值/i>
     * @return ArrayList 返回各scp的执行情况,如果第一个scp执行失败,则直接退出 <br>
     *         <i>scp--------scp</i> <br>
     *         <i>flag-------操作标志/i> <br>
     *         <i>reason-----失败原因</i>
     * @author huxiao
     * @version 2007-01-04
     */
    public ArrayList upDateAllScpForModCheckRing(String sSql, ArrayList paralist) throws WebException
    {
        logger.warn("start updating all scp fro mod check ring...");
        logger.warn("calling parameters: sSql[" + sSql + "]");
        Connection conn = null;
        CallableStatement stmt = null;
        ResultSet result = null;
        String connstr = "";
        ArrayList vet = new ArrayList();
        int ret = -1;
        Hashtable hash = null;
        Hashtable tmp = null;
        String failres = "";
        ArrayList scplist = null;
        try
        {
            scplist = getScpList();
        } catch (Exception e)
        {
            logger.error("Error Exception occurred while updating all scp fro mod check ring," + e.getMessage(), e);
            throw new WebException(e.getMessage());
        }

        for (int j = 0; j < scplist.size(); j++)
        {
            connstr = (String) scplist.get(j);
            failres = "";
            ret = -1;
            try
            {
                logger.info("start creating database connection....");
                conn = super.dbconn(connstr);
                logger.info("create database connection completed successfully");
                stmt = super.getCallStmt(conn, sSql);
                int i = 0;
                for (i = 0; i < paralist.size(); i++)
                {
                    hash = (Hashtable) paralist.get(i);
                    if (((String) hash.get("type")).equals("0"))
                    {
                        stmt.setInt(i + 1, Integer.parseInt((String) hash.get("value")));
                    } else
                    {
                        stmt.setString(i + 1, (String) hash.get("value"));
                    }
                }
                i = i + 1;
                stmt.registerOutParameter(i, java.sql.Types.INTEGER);
                i = i + 1;
                stmt.registerOutParameter(i, java.sql.Types.INTEGER);
                ret = -1;
                logger.warn("start executing SQL:" + sSql);
                if (super.Ver_DB == 1)
                { // sybase
                    result = stmt.executeQuery();
                    logger.warn("execute SQL completed successfully!start reading data from result...");

                    if (result.next())
                    {
                        ret = result.getInt(1);
                    }
                } else if (super.Ver_DB == 2)
                { // oracle
                    stmt.executeQuery();
                    logger.warn("execute SQL completed successfully!start reading data from result...");

                    ret = stmt.getInt(i - 1);
                }
                logger.warn("read data from result completed successfully");
                if (result != null)
                {
                    result.close();
                }
                if (stmt != null)
                {
                    stmt.close();
                }
                if (ret > 0)
                {
                    failres = this.getStrmsg(ret);
                }
            } catch (ZXYWException e)
            {
                failres = e.getMessage();
            } catch (SQLException e)
            {
                logger.info("Error Exception occurred while updating all scp fro mod check ring,", e);
                // 数据库执行失败,请与系统管理员联系!20008
                failres = GetResourceStr.getResourceStr("20008");
            } finally
            {
                logger.info("start releasing connection...");
                try
                {
                    if (stmt != null)
                    {
                        stmt.close();
                    }
                } catch (Exception e)
                {
                    stmt = null;
                }
                try
                {
                    if (conn != null)
                    {
                        super.dbfree(conn, connstr);
                    }
                } catch (Exception e)
                {
                }
                logger.info("release connection completed successfully");
                logger.warn("updating all scp fro mod check ring completed.");
            }
            // 填写日志
      //      if (!failres.equals("") && super.Debug > 0)
       //     {
                String sSqlLog = getSqlLog(sSql, paralist);
                logger.warn("[" + connstr + "]excute:" + sSqlLog + " result:" + failres + "[" + ret + "]");
       //     }
            tmp = new Hashtable();
            tmp.put("scp", connstr);
            tmp.put("result", ret + "");
            tmp.put("reason", failres);
            vet.add(tmp);
            if (ret < 0 || (j == 0 && ret > 0))
            { // 第一个scp操作出错则退出系统;
                break;
            }
        }
        if (vet != null)
        {
            logger.warn("return ArrayList[" + vet.size() + "]");
        }
        return vet;
    }











    public static String getSysTime() throws WebException
    {
        logger.warn("start getting system time...");
        try
        {
            SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            return formatter.format(new java.util.Date());
        } catch (Exception e)
        {
            logger.error("Error Exception occurred while getting system time", e);
            // 无法获得系统时间!10009
            throw new WebException("10009");
        }
    }

    public static String getSerkey()
    {
        return serviceKey;
    }

//    public int getDebug()
//    {
//        return super.Debug;
//    }

    public ArrayList upDateAllScpForSP(String sSql, ArrayList paralist) throws WebException
    {
        logger.warn("start updating all scp for sp...");
        logger.warn("calling parameters: sSql[" + sSql + "]");
        Connection conn = null;
        CallableStatement stmt = null;
        ResultSet result = null;
        String connstr = "";
        ArrayList vet = new ArrayList();
        int ret = -1;
        Hashtable hash = null;
        Hashtable tmp = null;
        String failres = "";
        ArrayList scplist = null;
        try
        {
            scplist = getScpList();
        } catch (Exception e)
        {
            logger.error("Error Exception occurred while updating all scp for sp," + e.getMessage(), e);
            throw new WebException(e.getMessage());
        }

        for (int j = 0; j < scplist.size(); j++)
        {
            connstr = (String) scplist.get(j);
            failres = "";
            ret = -1;
            try
            {
                logger.info("start creating database connection....");
                conn = super.dbconn(connstr);
                logger.info("create database connection completed successfully");
                stmt = super.getCallStmt(conn, sSql);
                int i = 0;
                for (i = 0; i < paralist.size(); i++)
                {
                    hash = (Hashtable) paralist.get(i);
                    if (((String) hash.get("type")).equals("0"))
                    {
                        stmt.setInt(i + 1, Integer.parseInt((String) hash.get("value")));
                    } else
                    {
                        stmt.setString(i + 1, (String) hash.get("value"));
                    }
                }
                i = i + 1;
                stmt.registerOutParameter(i, java.sql.Types.INTEGER);
                stmt.registerOutParameter(i + 1, java.sql.Types.INTEGER);
                ret = -1;
                logger.warn("start executing SQL:" + sSql);
                if (super.Ver_DB == 1)
                { // sybase
                    result = stmt.executeQuery();
                    logger.warn("execute SQL completed successfully!start reading data from result...");

                    if (result.next())
                    {
                        ret = result.getInt(1);
                    }
                } else if (super.Ver_DB == 2)
                { // oracle
                    stmt.executeQuery();
                    logger.warn("execute SQL completed successfully!start reading data from result...");

                    ret = stmt.getInt(i);
                }
                logger.warn("read data from result completed successfully");
                if (result != null)
                {
                    result.close();
                }
                if (stmt != null)
                {
                    stmt.close();
                }
                if (ret > 0)
                {
                    failres = this.getStrmsg(ret);
                }
            } catch (ZXYWException e)
            {
                failres = e.getMessage();
            } catch (SQLException e)
            {
                failres = "数据库执行失败,请与系统管理员联系!";
            } finally
            {
                logger.info("start releasing connection...");
                try
                {
                    if (stmt != null)
                    {
                        stmt.close();
                    }
                } catch (Exception e)
                {
                    stmt = null;
                }
                try
                {
                    if (conn != null)
                    {
                        super.dbfree(conn, connstr);
                    }
                } catch (Exception e)
                {
                }
                logger.info("release connection completed successfully");

            }
            // 填写日志
        //    if (!failres.equals("") && super.Debug > 0)
         //   {
                String sSqlLog = getSqlLog(sSql, paralist);
                logger.warn("[" + connstr + "]执行:" + sSqlLog + " 结果:" + failres + "[" + ret + "]");
        //    }
            tmp = new Hashtable();
            tmp.put("scp", connstr);
            tmp.put("result", ret + "");
            tmp.put("reason", failres);
            vet.add(tmp);
            if (ret < 0 || (j == 0 && ret > 0))
            { // 第一个scp操作出错则退出系统;
                break;
            }
        }
        logger.warn("updating all scp for sp completed.");
        if (vet != null)
        {
            logger.warn("return ArrayList[" + vet.size() + "]");
        }
        return vet;
    }

    /**
     * 得到冗余scp
     *
     * @param cardprefix
     *            String
     * @return String
     * @throws ZXYWException
     */
    public Hashtable getDuplicateScp() throws ZXYWException
    {
        logger.warn("start getting duplicate scp ...");
        Connection conn = null; // 数据库连接
        PreparedStatement stmt = null;
        ResultSet rs = null;
        Hashtable result = new Hashtable();
        String sSql = "select cardprefix, devicemodule  from zxinsys." + DBMacro01
                + "zxin_cardmap where servicekey='pstn52' ";
        try
        {
            logger.info("start creating database connection....");
            conn = dbconn(smpconnstr);
            logger.info("create database connection completed successfully");
            stmt = getPreStmt(conn, sSql);
            logger.warn("start executing SQL:" + sSql);
            rs = executeQuery(stmt);
            logger.warn("execute SQL completed successfully!start reading data from result...");

            while (rs.next())
            {
                result.put(rs.getString(1).trim(), rs.getString(2).trim());
            }
            logger.warn("read data from result completed successfully");
            rs.close();
        } catch (Exception es)
        {
            Strmsg = "getDuplicateScp():" + es.getMessage();
          //  if (Debug == 1)
         //   {
                Strmsg = Strmsg + " ErrQu: " + sSql;
        //    }
            logger.error("Error Exception occurred while getting duplicate scp ," + Strmsg);
            throw new ZXYWException("zxdb_access.getDuplicateScp(): " + Strmsg);
        } finally
        {
            logger.info("start releasing connection...");
            try
            {
                if (stmt != null)
                {
                    stmt.close();
                }
            } catch (Exception e)
            {
            }
            try
            {
                if (conn != null)
                {
                    dbfree(conn, smpconnstr);
                }
            } catch (Exception e)
            {
                logger.error("Error Exception occurred while getting duplicate scp," + Strmsg, e);
                throw new ZXYWException("zxdb_access.getDuplicateScp(): " + Strmsg);
            }
            logger.info("release connection completed successfully");
            logger.warn("getting duplicate scp  completed.");
        }
        logger.warn("return Hashtable[" + result.size() + "]");
        return result;
    }

    public Date DateUtil2SQL(java.util.Date date)
    {
        return new java.sql.Date(date.getTime());
    }

    public String getPreparedSQL(String sql, Object[] params) throws ZXYWException
    {
        // 1 如果没有参数,说明是不是动态SQL语句
        int paramNum = 0;
        if (null != params)
            paramNum = params.length;
        if (1 > paramNum)
            return sql;
        // 2 如果有参数,则是动态SQL语句
        StringBuffer returnSQL = new StringBuffer();
        String[] subSQL = sql.split("\\?");
        for (int i = 0; i < paramNum; i++)
        {
            if (params[i] instanceof Date)
            {
                returnSQL.append(subSQL[i]).append(" '").append(DateUtil2SQL((java.util.Date) params[i])).append("' ");
            } else if (params[i] instanceof Integer)
            {
                returnSQL.append(subSQL[i]).append(params[i]);
            } else
            {
                returnSQL.append(subSQL[i]).append(" '").append(params[i]).append("' ");
            }
        }
        if (subSQL.length > params.length)
        {
            returnSQL.append(subSQL[subSQL.length - 1]);
        }
        return returnSQL.toString();
    }

    /*
     * 对于String型参数,如果参数为空或者为null,返回####
     */
    public String getParamString(String param)
    {
        if (param == null || "".equals(param))
        {
            return "####";
        }

        return param;
    }

    /*
     * 对于Int型参数,如果参数为空或者为null,返回-1
     */
    public int getParamInt(String param)
    {
        int ret = -1;
        if (param != null && !"".equals(param))
        {
            try
            {
                return Integer.valueOf(param);
            } catch (NumberFormatException e)
            {
            }
        }
        return ret;
    }
}

猜你喜欢

转载自1250605829.iteye.com/blog/1490413