Java Stream Executing Batch Before Loop Finish

Viewed 41

In the code below I am trying to insert batch data but executeBatch works before stream ends. And it works contionusly. How can I make executeBatch to work after stream ends?

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();
    }
0 Answers
Related