Oracle回滚注意事项

回滚到fisrt()时注意使用next()时需要将光标移到第一行之前    使用previous();

package com.trs.util;

import java.util.Calendar;
import java.util.Date;
import java.util.Properties;
import java.sql.Connection;
import java.sql.ResultSet;
import java.text.SimpleDateFormat;

import org.apache.log4j.Logger;

import com.trs.client.TRSConnection;
import com.trs.client.TRSResultSet;
import com.trs.dao.oracleDao;
import com.trs.dao.trsDao;

public class checkTest {
    private static Logger CheckTRSLogger = Logger.getLogger("CheckTRSLogger");
   
    public static void check(){
       
        Date dateSta = null;                     //时间段起始
        Date dateEnd = null;                    //时间段结束
        Date dateComp = null;                     //总时间截止
        Calendar calSta=Calendar.getInstance();
        Calendar calEnd=Calendar.getInstance();
        Calendar calComp=Calendar.getInstance();
        String calStaString = "";
        String calEndString = "";
       
        TRSConnection trsCon = null;
        TRSResultSet trsRs = null;
        Connection oraCon = null;
        ResultSet oracleRs = null;
       
        String table = "";//oracle中检索的表名
        String tableTem = "";//oracle中临时的表名
        String tableRecord =""; //记录遗漏的记录
        String column_oracle1 = "";//oracel中检索的关键字段
        String column_oracle2 = "";//oracel中检索的字段
       
       
        String host = "";//trs数据库ip
        String port = "";//trs数据库端口
        String username = "";//trs数据库用户名
        String password = "";//trs数据库密码
        String library = "";//trs数据库中检索库名
        String column_trs1 = "";//trs数据库中检索字段名
        String column_trs2 = "";//trs数据库中关键字段名
       
       
        int trsNum = 0;    //TRS记录数量
        int oracleNum = 0;  //Oracle 记录数量
         
        try {
            DBUtil.loadProperties("oracleconfig.properties");
        } catch (Exception e2) {
            e2.printStackTrace();
            CheckTRSLogger.error(e2.getMessage());
        }
       
        table = DBUtil.getConfigInfo("table");
        tableTem = DBUtil.getConfigInfo("tableTem");
        tableRecord = DBUtil.getConfigInfo("tableRecord");
        column_oracle1 = DBUtil.getConfigInfo("column_oracle1");
        column_oracle2 = DBUtil.getConfigInfo("column_oracle2");
       
       
        try {
            DBUtil.loadProperties("trsconfig.properties");
        } catch (Exception e2) {
            e2.printStackTrace();
            CheckTRSLogger.error(e2.getMessage());
        }
       
         host = DBUtil.getConfigInfo("host");//trs数据库ip
         port = DBUtil.getConfigInfo("port");//trs数据库端口
         username = DBUtil.getConfigInfo("username");//trs数据库用户名
         password = DBUtil.getConfigInfo("password");//trs数据库密码
         library = DBUtil.getConfigInfo("library");//trs数据库中检索库名
         column_trs1 = DBUtil.getConfigInfo("column1");//trs数据库中检索字段名
         column_trs2 = DBUtil.getConfigInfo("column2");//trs数据库中检索关键字段名  ID
       
       
        try {
            DBUtil.loadProperties("timeLimits.properties");
        } catch (Exception e2) {
            e2.printStackTrace();
            CheckTRSLogger.error(e2.getMessage());
        }
       
        String dateStaString = DBUtil.getConfigInfo("DateSta");
        String dateEndString = DBUtil.getConfigInfo("dateEnd");
        String dateCompString = DBUtil.getConfigInfo("dateComp");
        String dataFormate = "yyyy.MM.dd HH:mm:ss";
       
        SimpleDateFormat dateformat = new SimpleDateFormat(dataFormate);
       
        try{
            dateSta = dateformat.parse(dateStaString);
            dateEnd = dateformat.parse(dateEndString);
            dateComp = dateformat.parse(dateCompString);
           
            calSta.setTime(dateSta);
            calEnd.setTime(dateEnd);
            calComp.setTime(dateComp);
        }catch(Exception e){
            e.printStackTrace();
            CheckTRSLogger.error(e.getMessage());
        }
       
        int dayNum =(calEnd.get(Calendar.YEAR)-calSta.get(Calendar.YEAR))*365
                +calEnd.get(Calendar.DAY_OF_YEAR)-calSta.get(Calendar.DAY_OF_YEAR);
       
        String calCompString = dateformat.format(calComp.getTime());
        //时间量小于截止时间执行比对程序
        while(calEnd.before(calComp)){
           
            calStaString = dateformat.format(calSta.getTime());
            calEndString = dateformat.format(calEnd.getTime());
           
            try{
                trsCon = trsDao.getTRSConnection(host, port, username, password);
                trsRs = trsDao.readTRS(trsCon, library, column_trs1, calStaString, calEndString);
                trsNum = (int)trsRs.getRecordCount();
               
                CheckTRSLogger.info("此时间段"+calStaString+"-----"+calEndString+"TRS记录量"+trsNum);
               
                oraCon = oracleDao.getOracleConnection();
                oracleRs = oracleDao.readOracle(oraCon, table, column_oracle1,column_oracle2, calStaString, calEndString);
                oracleRs.last();
                oracleNum = oracleRs.getRow();
                oracleRs.first();
                oracleRs.previous();

               
                if(oracleNum>trsNum){
                    if(trsNum>0){
                        for (int i = 0; i < trsNum; i++)
                        {
                            trsRs.moveTo(0, i);
                            String columnValue = trsRs.getString(column_trs2);
                            oracleDao.insertOracle(oraCon,tableTem,column_oracle1,columnValue);
                        }
                       
                        try{
                            trsRs.close();
                            trsCon.close();
                        }catch(Exception e){
                            e.printStackTrace();
                            CheckTRSLogger.error(e.getMessage());
                        }
                       
                        while(oracleRs.next()){
                            String temColumnValue = oracleRs.getString(column_oracle1);
                            if(!oracleDao.isExt(oraCon,tableTem,column_oracle1,temColumnValue)){
                                oracleDao.insertOracle(oraCon ,tableRecord,column_oracle1,temColumnValue);
                            }
                        }
                        oracleDao.deleteOracle(oraCon,tableTem);
                       
                    }else{
                        while(oracleRs.next()){
                            String temColumnValue1 = oracleRs.getString(column_oracle1);
                            oracleDao.insertOracle(oraCon ,tableRecord,column_oracle1,temColumnValue1);
                        }
                    }
                }
                   
            }catch(Exception e){
                e.printStackTrace();
                CheckTRSLogger.error(e.getMessage());
            }finally{
               
                try{
                    oracleRs.close();
                }catch(Exception e){
                    e.printStackTrace();
                    CheckTRSLogger.error(e.getMessage());
                }
               
                try{
                    oraCon.close();
                }catch(Exception e){
                    e.printStackTrace();
                    CheckTRSLogger.error(e.getMessage());
                }
               
                try{
                    trsRs.close();
                }catch(Exception e){
                    e.printStackTrace();
                    CheckTRSLogger.error(e.getMessage());
                }
               
                try{
                    trsCon.close();
                }catch(Exception e){
                    e.printStackTrace();
                    CheckTRSLogger.error(e.getMessage());
                }
               
            }
           
            CheckTRSLogger.info("已对比的时间段:"+calStaString+"----------"+calEndString);
           
            calSta = (Calendar)calEnd.clone();
           
            calEnd.add(Calendar.DAY_OF_YEAR, dayNum);
        }
    }
}
   

猜你喜欢

转载自ygsilence.iteye.com/blog/1483527