qq_37777965 2017-07-21 01:35 采纳率: 0%
浏览 836

大佬来帮我看看这个警告是怎么产生的!

while ((lineTxt = bufferedReader.readLine()) != null) {
            total_cnt++;
            if(!Common.columnInfo || total_cnt > 1){
                Common.getCount("+");
            }

            if (!Common.columnInfo) { // 第一行为非列信息
                Common.WriteThreadErrorLog(current_thd, Common.tableName + "表对应的数据文件 " + filePath + " 必须首行包含表列信息!");
                break;
            }

            if(total_cnt != 1 && total_cnt <= row){
                continue;
            }

            data = lineTxt.split(Common.colSplit);
            insertdata = new String[Common.qxAssemblyField.length + data.length];
            String sql = "";

            if (total_cnt == 1) {
                dataidx = new String[insertdata.length];
                /********************************** 查找表字段对应的文本字段 *****************************************/
                /******************************************组装字段整理*******************************************/
                for (int i = 0; i < Common.qxAssemblyField.length; i++) {
                    for (int j = 0; j < col.size(); j++) {
                        if (Common.qxAssemblyField[i].equalsIgnoreCase(col.get(j).get(0))) {
                            dataidx[textCol.size()] = "-1";
                            textCol.add(col.get(j));
                            break;
                        }
                    }
                }
                /*****************************************文件表列信息*********************************************/
                for (int i = 0; i < data.length; i++) {
                    boolean findFileColumn = false;
                    for (int j = 0; j < col.size(); j++) {
                        if (data[i].equalsIgnoreCase(col.get(j).get(0))) {
                            dataidx[textCol.size()] = Integer.toString(i);
                            textCol.add(col.get(j));
                            findFileColumn = true;
                            break;
                        }
                    }
                    if(!findFileColumn){
                        Common.WriteThreadErrorLog(current_thd, "数据文件:" + filePath + "中,列:" + data[i] + " 在表" + Common.tableName + "中未定义!");
                        success = false;
                    }
                }
                if(!success){
                    return success;
                }


                /****************************** 组装执行Prepare语句 ********************************/
                aimSql = new StringBuffer();
                aimSql.append("insert into " + Common.tableName + "(");
                for (int i = 0; i < textCol.size(); i++) {
                    aimSql.append(textCol.get(i).get(0));
                    if (i != (textCol.size() - 1)) {
                        aimSql.append(",");
                    }
                }
                aimSql.append(") values(");

                for (int i = 0; i < textCol.size(); i++) {
                    aimSql.append("?");
                    if (i != (textCol.size() - 1)) {
                        aimSql.append(",");
                    }
                }
                aimSql.append(")");
                pstmt_aim = conn.prepareStatement(aimSql.toString());
            } else {
                /********************************** 取组装字段值 *****************************************/
                for (int i = 0; i < Common.qxAssemblyField.length; i++) {
                    String assembData = Common.properties.getProperty(Common.tableName + "." + Common.qxAssemblyField[i]);
                    if (assembData.contains("[")) {
                        String[] idx = assembData.substring(assembData.indexOf("[") + 1, assembData.indexOf("]")).split(",");
                        String strParameter = assembData.substring(assembData.indexOf("]") + 1);
                        String[] paraType = null;
                        if (strParameter.contains("["))
                            paraType = strParameter.substring(strParameter.indexOf("[") + 1, strParameter.indexOf("]")).split(",");
                        if (idx[0].equals("")) {
                            parameters = new String[paraType.length];
                            messageFormat = new MessageFormat(assembData.substring(assembData.lastIndexOf("]") + 1));
                            for (int m = 0; m < paraType.length; m++) {
                                Statement st = conn.createStatement();
                                sql = "select " + paraType[m] + " from dual";
                                ResultSet rs = st.executeQuery(sql);
                                while (rs.next()) {
                                    parameters[m] = rs.getString(1);
                                }
                                rs.close();
                                st.close();
                            }
                            insertdata[i] = messageFormat.format(parameters);
                        } else {
                            parameters = new String[idx.length];
                            messageFormat = new MessageFormat(assembData.substring(assembData.lastIndexOf("]") + 1));
                            for (int m = 0; m < idx.length; m++) {
                                if (paraType != null && m < paraType.length && paraType[m].contains("%")) {
                                    parameters[m] = String.format(paraType[m], Integer.parseInt(data[Integer.parseInt(idx[m])].trim()));
                                } else {
                                    parameters[m] = data[Integer.parseInt(idx[m])].trim();
                                }
                            }
                            insertdata[i] = messageFormat.format(parameters);
                        }
                    } else {
                        insertdata[i] = assembData;
                    }
                }

                /********************************** 取文本字段值 *****************************************/
                if(insertdata.length != dataidx.length){
                    Common.WriteThreadErrorLog(current_thd, "目标表(" + Common.tableName + ")数据录入过程中产生数据组装异常!位置:" + filePath + ",行:" + total_cnt + ",错误信息:当前行数据量与首行列字段数不一致!");
                    chktxtdata = false;
                }

                for (int i = Common.qxAssemblyField.length; i < dataidx.length; i++) {
                    insertdata[i] = data[Integer.parseInt(dataidx[i])];
                }

                // 设置数据参数
                if (chktxtdata) {
                    exec_str = insertTabByPst(pstmt_aim, insertdata, textCol);
                    if(exec_str.equals("OK")){
                        insert_cnt ++;
                    } else {
                        err_cnt++;
                        Common.WriteThreadErrorLog(current_thd, "目标表(" + Common.tableName + ")数据录入过程中产生SQL异常!位置:" + filePath + ",行:" + total_cnt + ",错误信息:" + exec_str);
                    }
                } else {
                    err_cnt++;
                }
            }

            // 提交数据
            if ((total_cnt % Common.commit) == 0 && total_cnt > 1) {
                try {
                    pstmt_aim.executeQuery();
                    PropertiesUtil.InsertOrUpdate(filePath, String.valueOf(total_cnt), pro,path);
                    conn.commit(); 
                } catch (SQLException e) {
                    Common.WriteThreadErrorLog(current_thd, "目标表(" + Common.tableName + ")数据录入过程中产生COMMIT异常!位置:" + filePath + ",行:" + (total_cnt-Common.commit+1)+"——" + total_cnt + ",错误信息:" + e.getMessage());
                }
            }
        }
        bufferedReader.close();
        read.close();
        产生的警告为Resource leak: 'bufferedReader' is never closed
  • 写回答

4条回答 默认 最新

  • 专家-郭老师 Java领域新星创作者 2017-07-21 01:47
    关注

    'bufferedReader' is never closed 不是已经说得很清楚了, 'bufferedReader' 不可以关闭。

    评论

报告相同问题?

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料