2017-05-29 77 views
-5
 protected void saveData() { 
     Map<String, String> allStationsParams = new HashMap<>(); 
     List<String> stations = getAllStations(); 
     stmt = Database.getUpdateableStatement(); 
     today = (SysTime.currentTimeMillis()/DasStamp.TICKS_PER_DAY) * 
     DasStamp.TICKS_PER_DAY; 
     String changeTimestamp = DasStamp.asCompactString(today); 
     String keyName = "COM.MAPPINGTOOLTIP." + attributeValue; 
     for (int row = 0; row < this.getTableModel().getRowCount(); row++) { 
      String station = (String)this.getTableModel().getValueAt(row, 0); 
      putInStationParams(this, station, allStationsParams, row); 
     } 
     for (String station : stations) { 
      boolean sendToDB = false; 
      try (ResultSet rs = this.rsParameters) { 
       rs.beforeFirst(); 
       while (rs.next()) { 
        if (rs.getString("station").equals(station)) { 
         sendToDB = true; 
         break; 
        } 
       } 
       if (sendToDB) { 
        if (!rs.getString("value_text").equals(allStationsParams.get(station)) || !allStationsParams.containsKey(station)) { 
         sendToDB = true; 
        } else { 
         sendToDB = false; 
        } 
       } else if (allStationsParams.containsKey(station)) { 
        sendToDB = true; 
       } 

       if (sendToDB) { 
        String sql = "REPLACE INTO dss_parameter (key_name, station, valid_from, value_text" 
          + ", change_timestamp) VALUES ('" 
          + keyName + "','" + station + "','" + DasStamp.asDateOnlyString(today) + "','" 
          + Helper.nz(allStationsParams.get(station)) + "','" 
          + changeTimestamp + "') ;"; 
        if (null != stmt) { 
         stmt.execute(sql); 
         if (!isResultSetEmpty(rs) && !rs.isAfterLast()) { 
          AdminLogger.log("dss_parameter", Action.UPDATE, 
            "key_name='" + keyName + "' and station='" + station + "' and valid_from='" + DasStamp.asDateOnlyString(today) + "'", 
            "value_text='" + rs.getString("value_text") + "'", 
            "value_text='" + Helper.nz(allStationsParams.get(station)) + "', change_timestamp='" + changeTimestamp + "'"); 
         } else { 
          AdminLogger.log("dss_parameter", Action.INSERT, 
            "key_name='" + keyName + "' and station='" + station + "' and valid_from='" + DasStamp.asDateOnlyString(today) + "'", 
            "", "value_text='" + Helper.nz(allStationsParams.get(station)) + "', change_timestamp='" + changeTimestamp + "'"); 
         } 
        } 
       } 
      } catch (SQLException e) { 
       AppFrame.msgBox("Error on insert: " + e.getMessage()); 
       Helper.printMessage(true, false, "Parameter save failed!!", e); 
      } 
     } 
    } 

其中rsParameters是类级别并在之前获取。在第一次 迭代之后,rsParameters值变为null。这是一个尝试使用资源块 的问题?请帮助尝试使用资源类变量获取null

其中rsParameters是类级别并在之前获取。在第一次 迭代之后,rsParameters值变为null。这是一个尝试使用资源块 的问题?请帮助

+1

只需在此输入正常的完整代码即可。没有人可以从这半个代码示例中猜出出了什么问题。 – nbokmans

+0

那么,当你退出空的try块时,你要求它关闭'rsParameters',所以它在第一次迭代时会这样做,并在下一次出现错误。 – eckes

+0

有没有解决方案? –

回答