java.sql.SQLException: 没有这样的列和 false Period getDays 结果

java.sql.SQLException: no such column and false Period getDays result

我是 java 初学者,遇到两个问题。

1) SQL 异常:没有这样的列 'Ofen'

这是我的代码,我想从名为 "kleintest.db" 的 SQLite 数据库中获取特定数据,其中包含 2 tables "maindata" 和 "Zahlwertuntertable" . maindata 包含 'Ofen' 条目作为 TEXT。 ResultSet rs 通常应该从 maindata 中获取所有数据,而 ResultSet rs2 应该从 Zahlwertuntertable 中获取权重。但是 运行 程序现在显示上述错误。

public static void readDB() {

    try {
        Statement stmt = connection.createStatement();
        //ResultSet rs = stmt.executeQuery("SELECT * FROM Gewichtsabnahme;");
        ResultSet rs = stmt.executeQuery("SELECT * FROM maindata;");
        ResultSet rs2 = stmt.executeQuery("SELECT * FROM Zahlwertuntertable;");

        while (rs.next()) {
            System.out.println("Ofen = " + rs.getString("Ofen"));
            System.out.println("Platznummer = " + rs.getInt("Zahlwert"));
            System.out.println("Startdatum = " + rs.getString("Startdatum"));
            LocalDate heute = LocalDate.now();
            String Datum = rs.getString("Startdatum");
            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy");
            LocalDate Wägetag = LocalDate.parse(Datum, formatter);
            Period DiffTag = Period.between(heute, Wägetag);
            System.out.format("Tage = " + DiffTag.getDays() + "\n");            //

            System.out.println("Gewicht = " + rs2.getInt("Startgewicht")); 

        }
        rs.close();           
        rs2.close();
        connection.close();

    } catch (SQLException e) {
        System.err.println("Zugriff auf DB nicht möglich.");
        e.printStackTrace();
    }
}

table 主数据包含以下项目: Laufnummer Ofen Zahlwert Startdatum

但是 Laufnummer 只是一个主键,不应该被检索。

2) 下一题是句号函数。这工作得很好,但作为打印结果,我会得到 P 1D 或 P 1M 2D 看起来有点混乱。我喜欢只打印简单的天数,例如 45 或 45D,并将 getDays() 添加到我的 DiffTag。现在我的结果是 -1,这完全没有意义。这里有什么问题?

Period DiffTag = Period.between(heute, Wägetag);
        System.out.format("Tage = " + DiffTag.getDays() + "\n");

感谢您提供我可能错过的建议和链接。但是到目前为止我所看到的一切都没有指出我的具体问题。

您一次只能为 Statement 对象打开一个结果集,因此当您再次执行第二个查询时 "Zahlwertuntertable" 第一个结果集将关闭。

因此要么添加另一条语句,要么一次处理一个查询。

此外,现在您调用 rs.next() 但从未调用 rs2.next()

看起来很奇怪