项目的整体部署整体采用的是替换class文件,感觉这个方式很hanp但是没办法,自己也不是项目经理,在做一个同步SqlServer的视图数据到Mysql数据库的时候发生了各种错误,让我有点怀疑人生:
1、保存过程以及其中的逻辑代码并没有执行但是就显示关闭了数据库连接
- 首先造成这个错误是因为事实人员在不是文件的时候没有把连接sqlServer的包部署上去,或者说是部署错了位置
- 自己的日志记录不够完善细致,不能能很好地暴露出错误信息
2、数据转换错误
dataNew.setHdfRate((Float)treatDataRs.getObject("HDF_Rate"));
获取到的数据为空,转Float失败:
dataNew.setHdfRate((Float)(treatDataRs.getObject("HDF_Rate")==null?0.0:treatDataRs.getObject("HDF_Rate")));
0.0默认的类型是Double装换为Float精度丢失装换失败,要加上F
dataNew.setHdfRate((Float)(treatDataRs.getObject("HDF_Rate")==null?0.0F:treatDataRs.getObject("HDF_Rate")));
3、从数据库获取的到数据应该判断是否为空在判断结果集的大小,如果为0的话实际上结果集就是null,直接取大小是会报错的
List<Object[]> mapList = sqlServerUntilsDAO.findBySql(querySql);
log.info("中间查询的数据集合大小为:"+(mapList==null?0:mapList.size()));
if (mapList!=null&&mapList.size()>0){
item.setTargetTime(mapList.get(0)+"");
item.setTreatmentTime(mapList.get(0)+"");
}