【问题标题】:results.next() == false and there's no printing of dataresults.next() == false 并且没有打印数据
【发布时间】:2019-08-02 16:00:32
【问题描述】:

results.next() 为 false,!results.next() 在 while 循环中打印 ResultSet closed

我什么都试过了。从做 Class.forName() 到 connection.setAutoCommit(false) 没有任何工作:/

public static void main(String[] args) throws Exception {
       String query = "SELECT * FROM StudentInfo";
       String url;
        try {
            Class.forName("org.sqlite.JDBC");
        connection = DriverManager.getConnection(url);
            ps = connection.prepareStatement(query);
            results = ps.executeQuery();
            while (results.next()) {
               print(results.getString("nameID"));
            }
    } catch (SQLException e) {
        print(e.getMessage());
    }  

}

只打印出 BUILD SUCCESSFUL 而不打印我的任何数据

【问题讨论】:

  • StudentInfo表中有记录吗..?
  • 是的-nameID中有20个数据集,是StudentInfo的第一列
  • 至少添加一个 System.out.println("starting");System.out.println("done"); (提示:如果您遇到异常,请始终打印堆栈跟踪 e.printStackTrace();
  • 顺便说一句:BUILD SUCCESSFUL 在构建/编译时出现,不一定在启动/运行时出现 - 那么,您确定启动程序还是构建它? (也许描述一下你是如何尝试的)
  • 或尝试一些奇怪的东西SELECT * FROM StudentInfoERROR

标签: java sqlite jdbc


【解决方案1】:

首先要考虑的是确保表格不为空。

Class.forName 甚至没有分配给任何东西。 connection.setAutoCommit(false) 在这里无关紧要,因为这更多的是交易细节。对于这么简单的查询,您无需担心。

我会先尝试运行您知道有效的查询。也许您的连接甚至不正确或可能为空,因此从未真正执行查询。这可能就是您的结果集关闭的原因。

我也希望 print()from System.out 或实际打印的东西。

【讨论】:

  • print() 是 System.out,是的。不,我的连接不为空(我使用 if 语句检查)
  • 我的网址也是“jdbc:sqlite:ProjectWeekDB.sqlite”
  • 错了,首先要考虑是程序是否正在启动[:-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-11
  • 2021-10-11
  • 1970-01-01
  • 2019-08-27
  • 2016-02-29
  • 1970-01-01
  • 2015-04-17
相关资源
最近更新 更多