Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Try with resource类变量获取null 受保护的void saveData(){ Map AllStationParams=new HashMap(); 列出站点=getAllStations(); stmt=Database.getUpdateableStatement(); 今天=(SysTime.currentTimeMillis()/DasStamp.TICKS\u/天)* DasStamp.TICKS_/天; String changeTimestamp=DasStamp.asCompactString(今天); String keyName=“COM.MAPPINGTOOLTIP.”+attributeValue; 对于(int row=0;row_Java_Exception_Exception Handling_Try Catch_Resultset - Fatal编程技术网

Java Try with resource类变量获取null 受保护的void saveData(){ Map AllStationParams=new HashMap(); 列出站点=getAllStations(); stmt=Database.getUpdateableStatement(); 今天=(SysTime.currentTimeMillis()/DasStamp.TICKS\u/天)* DasStamp.TICKS_/天; String changeTimestamp=DasStamp.asCompactString(今天); String keyName=“COM.MAPPINGTOOLTIP.”+attributeValue; 对于(int row=0;row

Java Try with resource类变量获取null 受保护的void saveData(){ Map AllStationParams=new HashMap(); 列出站点=getAllStations(); stmt=Database.getUpdateableStatement(); 今天=(SysTime.currentTimeMillis()/DasStamp.TICKS\u/天)* DasStamp.TICKS_/天; String changeTimestamp=DasStamp.asCompactString(今天); String keyName=“COM.MAPPINGTOOLTIP.”+attributeValue; 对于(int row=0;row,java,exception,exception-handling,try-catch,resultset,Java,Exception,Exception Handling,Try Catch,Resultset,其中rsParameters是类级别的,在之前获取。先 迭代,rsParameters值变为null。这是try的问题吗 是否使用资源块?请帮忙 其中rsParameters是类级别的,在之前获取。先 迭代,rsParameters值变为null。这是try的问题吗 使用资源块?请帮助您的rsParameters参数属于Resultset类型。 在第一次迭代中,在try{}之后,将调用rsParameters:ResultSet的close()方法 这会在内部使resultSet的所有属性都为N

其中rsParameters是类级别的,在之前获取。先 迭代,rsParameters值变为null。这是try的问题吗 是否使用资源块?请帮忙

其中rsParameters是类级别的,在之前获取。先 迭代,rsParameters值变为null。这是try的问题吗
使用资源块?请帮助

您的rsParameters参数属于Resultset类型。 在第一次迭代中,在try{}之后,将调用rsParameters:ResultSet的close()方法

这会在内部使resultSet的所有属性都为NUll

这就是在第二次迭代期间获取Null属性的原因


请参阅:

只需在此处输入正常的完整代码即可。没有人能从这个半代码示例中猜出哪里出了问题。那么,当您退出空的try块时,您要求它关闭
rs
,即
rsParameters
,因此它在第一次迭代时会这样做,并在下一次迭代时给您一个错误。有什么解决方案吗?
        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);
            }
        }
    }