Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.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流_Java_Java Stream - Fatal编程技术网

循环完成前执行批处理的Java流

循环完成前执行批处理的Java流,java,java-stream,Java,Java Stream,在下面的代码中,我试图插入批处理数据,但executeBatch在流结束前工作。而且它持续工作。流结束后,如何使ExecuteBack工作 try (Connection dbConn = hConn.getHikariMap().get("" + connectionId).getConnection();) { Statement statement = dbConn.createStatement(); if (fileData.get(

在下面的代码中,我试图插入批处理数据,但executeBatch在流结束前工作。而且它持续工作。流结束后,如何使ExecuteBack工作

try (Connection dbConn = hConn.getHikariMap().get("" + connectionId).getConnection();) {
        Statement statement = dbConn.createStatement();
        if (fileData.get(0).length == 1) {

            fileData.stream().forEach(row -> {
                columnValTemp.append("','" + row[fileColumnOrder.get(0)] + "','" + row[fileColumnOrder.get(0)]);
                valuesTemp.append(columnValTemp);
                columnValTemp.setLength(0);
                values.append(valuesTemp);

                String query = "INSERT INTO " + schema + "." + tableName + " (" + columns + ") VALUES " + " ('" + values+ "')";
                try {
                    statement.addBatch(query);
                } catch (SQLException e) {
                    e.printStackTrace();
                }
                values.delete(values.length() - valuesTemp.length(), values.length());
                valuesTemp.setLength(0);
            });
            
            statement.executeBatch();
}
    } catch (SQLException e) {
        logger.error(e, e);
        e.printStackTrace();
    }

您如何知道它在流结束之前执行?它每秒插入查询。我还调试了它。我希望stream能够完成,然后立即插入所有bacth查询。如果您认为这是导致
stream()
的原因,但我不这样认为,您可以使用
forEach
进行收集-这里不需要
stream()
。我也认为不应该,但它可以用于for循环,但不能用于stream和forEach。即使我在流之后立即打印某些内容,它也会在流处理结束之前工作。