@Override
@Async
public BaseResult run() {
BaseResult baseResult ;
Connection conn = null;
ScriptRunner runner = null;
OutputStream os = null;
PrintWriter logWriter = null;
try{
Class.forName(driver).newInstance();
conn =DriverManager.getConnection(url, userName, passWord);
runner = new ScriptRunner(conn);
Resources.setCharset(Charset.forName("UTF-8")); //设置字符集,不然中文乱码插入错误
os=new FileOutputStream("wesure-wehr-service/target/classes/log.txt");
os.flush();
logWriter = new PrintWriter(os);
runner.setErrorLogWriter(logWriter);
runner.setLogWriter(null);//设置是否输出日志
Reader reader = new FileReader("wesure-wehr-service/target/classes/t_dt_orgstatics.sql");
runner.runScript(reader);
}catch(SQLException e){
// try {
// conn.rollback();
// log.error("数据回滚成功");
// }catch (Exception e2){
// log.error("数据回滚失败");
// }
log.error(e.getMessage());
baseResult = new BaseResult(BaseMessage.ERROR,"数据库连接错误", null);
log.error(baseResult.getMessage());;
return baseResult;
} catch (IllegalAccessException | IOException | ClassNotFoundException | InstantiationException e) {
log.error(e.getMessage());
return new BaseResult(BaseMessage.ERROR,"文件读取错误", null);
}finally {
if(runner != null)
runner.closeConnection();
try {
if(conn != null)
conn.close();
if(os != null)
os.close();
}catch (Exception e){
log.error(e.getMessage());
}
if(logWriter != null)
logWriter.close();
}
FileInputStream fis = null;
StringBuffer stringBuffer = new StringBuffer();
try {
fis = new FileInputStream("wesure-wehr-service/target/classes/log.txt");
InputStreamReader isr = new InputStreamReader(fis);
char[] b = new char[5];// 读取到的数据要写入的数组。
int len;// 每次读入到char[]中的长度,若无则返回-1
while ((len = isr.read(b)) != -1) {
stringBuffer.append(new String(b, 0, len));
}
} catch (IOException e) {
log.error(e.getMessage());
baseResult = new BaseResult(BaseMessage.ERROR,"文件读取错误", null);
log.error(baseResult.getMessage());;
return baseResult;
} finally {
if (fis != null) {
try {
fis.close();
} catch (IOException e) {
log.error(e.getMessage());
}
}
}
if(stringBuffer.length() > 0){
log.info(stringBuffer.toString());
return new BaseResult(BaseMessage.ERROR,stringBuffer.toString(), null);
} else{
log.info("运行完成");
return new BaseResult(BaseMessage.SUCCESS);
}
}