diff --git a/代码/jsp/telsale_import/src/com/cpic/telsale/DataImport/DataImport.java b/代码/jsp/telsale_import/src/com/cpic/telsale/DataImport/DataImport.java index 8b212de..019a09c 100644 --- a/代码/jsp/telsale_import/src/com/cpic/telsale/DataImport/DataImport.java +++ b/代码/jsp/telsale_import/src/com/cpic/telsale/DataImport/DataImport.java @@ -445,8 +445,6 @@ public class DataImport Class.forName( "oracle.jdbc.driver.OracleDriver" ); callStmt = oracleConnection.prepareCall( callProcedureSql ); - oracleConnection.setAutoCommit( false ); - for ( TelsalePolicyRecord recordIterator : policyList ) { callStmt.setString( 1, recordIterator.getPolicyNo() ); @@ -558,38 +556,45 @@ public class DataImport " today)"; - statement = conn.prepareStatement( insertSQL ); + statement = conn.prepareStatement( insertSQL ); - for ( TelsalePolicyRecord recordIterator : policyList ) + for ( TelsalePolicyRecord recordIterator : policyList ) + { + statement.setString( 1, recordIterator.getPolicyNo() ); + statement.setString( 2, recordIterator.getOperatorCode() ); + statement.setString( 3, recordIterator.getOperatorName() ); + statement.setString( 4, recordIterator.getOperatorSectionOfficeCode() ); + statement.setString( 5, recordIterator.getOperatorSectionOfficeName() ); + statement.setString( 6, recordIterator.getOperatorDepartmentCode() ); + statement.setString( 7, recordIterator.getOperatorDepartmentName() ); + + try { - statement.setString( 1, recordIterator.getPolicyNo() ); - statement.setString( 2, recordIterator.getOperatorCode() ); - statement.setString( 3, recordIterator.getOperatorName() ); - statement.setString( 4, recordIterator.getOperatorSectionOfficeCode() ); - statement.setString( 5, recordIterator.getOperatorSectionOfficeName() ); - statement.setString( 6, recordIterator.getOperatorDepartmentCode() ); - statement.setString( 7, recordIterator.getOperatorDepartmentName() ); - - try - { - statement.execute(); - } - catch ( SQLException error ) - { - //捕捉写入错误 - errorMessage += "保单号" + - recordIterator.getPolicyNo() + - "保存失败,错误提示:" + - error.getMessage() + "
\n"; - - errorCount++; - } + statement.execute(); } + catch ( SQLException error ) + { + //捕捉写入错误 + errorMessage += "保单号" + + recordIterator.getPolicyNo() + + "保存失败,错误提示:" + + error.getMessage() + "
\n"; + errorCount++; + } + } + + //检查错误数量,如果有错误就抛出异常 + if ( errorCount > 0 ) + { + throw new TelsalePolicyDataSaveToInformixException( errorMessage ); + } } /** - * @Description: + * @Description: 读取excel文件,将数据写入oracle和informix数据库。 + * 数据库连接关闭自动提交,在两个数据库都写入成功后提交。 + * 只要有一个数据库写入抛出异常,回滚两个数据库的事务。 * @Param: * @return: void * @Author: 王炜 @@ -624,8 +629,15 @@ public class DataImport try { - //saveTelsalePolicyDataToOracle( oracleConnection, policyList ); + + oracleConnection.setAutoCommit( false ); + informixConnection.setAutoCommit( false ); + + saveTelsalePolicyDataToOracle( oracleConnection, policyList ); saveTelsalePolicyDataToInformix( informixConnection, policyList ); + + oracleConnection.commit(); + informixConnection.commit(); } catch ( Exception error ) { @@ -635,22 +647,6 @@ public class DataImport throw new TelsalePolicyDataSaveToDatabaseException( error.getMessage() ); } -// catch ( TelsalePolicyDataSaveToInformixException error ) -// { -// //写入informix错误,回滚两个数据库,再抛出异常 -// oracleConnection.rollback(); -// informixConnection.rollback(); -// -// throw new TelsalePolicyDataSaveToDatabaseException( error.getMessage() ); -// } -// catch (SQLException error ) -// { -// //任何其他sql错误,回滚两个数据库,再抛出异常 -// oracleConnection.rollback(); -// informixConnection.rollback(); -// -// throw error; -// } finally { //无论如何要关闭连接 diff --git a/代码/jsp/telsale_import/web/WEB-INF/web.xml b/代码/jsp/telsale_import/web/WEB-INF/web.xml index f08013c..42a1dcf 100644 --- a/代码/jsp/telsale_import/web/WEB-INF/web.xml +++ b/代码/jsp/telsale_import/web/WEB-INF/web.xml @@ -37,7 +37,7 @@ dxbd_test - jdbc:informix-sqli://10.39.0.92:9096/ywgl_xm:INFORMIXSERVER=pxmcx2;newcodeset=GBK,8859-1,819;user=ccx99;password=ct0IT17! + jdbc:informix-sqli://10.39.0.92:16192/ywgl_xm:INFORMIXSERVER=xmcx2;newcodeset=GBK,8859-1,819;user=ccx99;password=c92IT09 ora_telsale_url diff --git a/代码/oracle/项目/建表/电销保单信息表.sql b/代码/oracle/项目/建表/电销保单信息表.sql index 6ef5be4..7d4bd52 100644 --- a/代码/oracle/项目/建表/电销保单信息表.sql +++ b/代码/oracle/项目/建表/电销保单信息表.sql @@ -1,6 +1,6 @@ create table Ϣ ( - varchar2(20), + varchar2(20) primary key, ˴ varchar2(20), varchar2(100), ˿Ҵ varchar2(20), diff --git a/代码/oracle/项目/电销保单信息管理.dsk b/代码/oracle/项目/电销保单信息管理.dsk index e0756fb..cd8aadd 100644 --- a/代码/oracle/项目/电销保单信息管理.dsk +++ b/代码/oracle/项目/电销保单信息管理.dsk @@ -4,21 +4,9 @@ PL/SQL Developer Project Desktop SavePath=D:\develop\projects_win\2018\telsale_management_2017\\oracle\Ŀ\ Index=1 -DPI=96 -Left=0 -Top=0 -Width=1550 -Height=719 -State=0 -Type=0 -ChildListIndex=3 -WindowName=TELSALE.Ϣ@DEV01 -Pinned=0 - -Index=2 Filename=D:\develop\projects_win\2018\telsale_management_2017\\oracle\Ŀ\\telsale_policy_check_pkg.pck VCSDBObject=0 -Connection=284741774427458141914393448343813479491342034357449534493235319731913185332349975023472932994861479148014811 +Connection=203611904672479448844638482446903692419849284826467636303960398639804038366443144308449440244018359636063616 DPI=96 Left=0 Top=0 @@ -29,10 +17,6 @@ Type=3 ChildListIndex=1 Pinned=0 -Index=3 -Filename= -Connection=288540874337449141654431439345473389501542414363446935513241329932613223336131153141342348734899482948394721 - [Files] [MRU]