查询创建不会打印所有索引

时间:2019-07-15 08:06:15

标签: java apache-poi

当我创建文件并写入查询时,它仅写入一次吗?为什么?

for (spinelliIndex = 0; spinelliIndex < spinelli.getVeicoli_id().size(); spinelliIndex++) {
            boolean match = false;
            for (veicoloIndex = 0; veicoloIndex < veicoloDb.getVeicoloId().size(); veicoloIndex++) {
                if (spinelli.getVeicoli_targa().get(spinelliIndex).equals(veicoloDb.getTarga().get(veicoloIndex))) {
                    match = true;

                    // Stampa a Video
                    System.out.println(spinelli.getVeicoli_targa().get(spinelliIndex) + " = "
                            + veicoloDb.getTarga().get(veicoloIndex) + " --> "
                            + spinelli.getVeicoli_id().get(spinelliIndex) + " --> "
                            + veicoloDb.getVeicoloId().get(veicoloIndex));

                    // Scrivi nella riga i
                    row = sheet.getRow(spinelliIndex);

                    // Scrivi nella colonna AC indice 28
                    cell = row.createCell(28);

                    // Scrivi il ciclo in tutte le righe nella colonna AC indice 28
                    sheet.getRow(spinelliIndex).createCell(28)
                            .setCellValue(spinelli.getVeicoli_id().get(spinelliIndex));

                    FileOutputStream fos = new FileOutputStream(filePath);

                    // Scrivi nel file EXCEL
                    wb.write(fos);
                    fos.close();

                    // Scrivi NEl file .txt
                    // Crea la Query e scrivi nel file
                    file = new File(path);
                    fw = new FileWriter(file);

                    fw.write("UPDATE veicolo SET ID = " + "'" + spinelli.getVeicolo_newid().get(spinelliIndex) + "'" + ","
                            + "CREATE_DATE = " + "'" + veicoloDb.getCreate_date().get(veicoloIndex) + "'" + ","
                            + "MODIFIED_DATE = " + "'" + veicoloDb.getModified_date().get(veicoloIndex) + "'" + "," + "UUID = "
                            + "'" + veicoloDb.getUuid().get(veicoloIndex) + "'" + "," + "CLASSE_EURO = " + "'"
                            + veicoloDb.getClasse_euro().get(veicoloIndex) + "'" + "," + "CODICE_CLIENTE_ORIGINARIO = " + "'"
                            + veicoloDb.getCodice_cliente_originario().get(veicoloIndex) + "'" + "," + "CONTRATTO = " + "'"
                            + veicoloDb.getContratto().get(veicoloIndex) + "'" + "," + "DATA_FINE_VALIDITA = " + "'"
                            + veicoloDb.getData_fine_validita().get(veicoloIndex) + "'" + "," + "DATA_INIZIO_VALIDITA = " + "'"
                            + veicoloDb.getData_inizio_validita().get(veicoloIndex) + "'" + "," + "DISPONIBILITA = " + "'"
                            + veicoloDb.getDisponibilita().get(veicoloIndex) + "'" + "," + "NAZIONE = " + "'"
                            + veicoloDb.getNazione().get(veicoloIndex) + "'" + "," + "TARGA = " + "'" + veicoloDb.getTarga().get(veicoloIndex)
                            + "'" + "," + "TIPO_DI_POSSESSO = " + "'" + veicoloDb.getTipo_di_possesso().get(veicoloIndex) + "'"
                            + "," + "ID_ANAGRAFICA = " + "'" + veicoloDb.getId_anagrafica().get(veicoloIndex) + "'"
                            + "FROM DISPOSITIVO_VEICOLO WHERE dispositivo_veicolo.id_anagrafica = veicolo.id_anagrafica"
                            + ";" + "\n");
                    fw.flush();

                    fw.close();

                }

            }
            // Targhe non trovate
            if (!match) {
                System.out.println("Targa non trovata: " + spinelli.getVeicoli_targa().get(spinelliIndex));
            }

        }

    }

1 个答案:

答案 0 :(得分:0)

我不确定您在程序上的预期行为是什么,但是我想您想多次写入(附加)文件,对吗?

在您的代码中,创建新文件(new File())并在循环中关闭编写器(fw.close())。 看起来,该程序多次覆盖了同一文件。

因此,如果要追加(而不是覆盖),建议您将文件创建和文件关闭放在循环的外部,如下所示(虚拟代码):

file = new File(path);
fw = new FileWriter(file);
for (spinelliIndex = 0; spinelliIndex < spinelli.getVeicoli_id().size(); spinelliIndex++) {
    fw.write("something");
}
fw.close();

此外,fw.close()将呼叫fw.flush()。如果没有任何特定原因要编写,可以将其删除。