当前位置:  开发笔记 > 编程语言 > 正文

java.sql.SQLException:ResultSet已关闭

如何解决《java.sql.SQLException:ResultSet已关闭》经验,为你挑选了1个好方法。

我无法进行进一步的处理,因为我在运行此代码时关闭了ResultSet.我在sqlite数据库表的15行之后添加了值,我希望找到15行的平均值,并且应该存储在ArrayList中.

这是代码: -

try {
    Class.forName("org.sqlite.JDBC");
    c = DriverManager.getConnection("jdbc:sqlite:test.db");
    c.setAutoCommit(false);
    System.out.println("Opened database successfully3");
    stmt = c.createStatement();
    rs = stmt
            .executeQuery("SELECT TIME,BID,ASK FROM '" + title + "' ;");
    System.out.println("Opened database successfully 20");
    while (rs.next()) {
        i++;
        System.out.println(i);
        if (i > 15) {
            System.out.println("i am in");
            List stocklist = new ArrayList();
            String main = rs.getString(1);
            System.out.println(rs.getString(1));
            String s[] = main.split(" ", 2);
            String date = s[0];
            String time = s[1];
            stocklist.add(date);
            stocklist.add(time);
            stocklist.add(df.format(rs.getFloat("BID")));
            stocklist.add(df.format(rs.getFloat("ASK")));
            rs1 = stmt
                    .executeQuery("SELECT ASK FROM '" + title + "' ;");
            int j = 1;
            while (rs1.next()) {
                if (j < i) {
                    System.out.println(rs1.getFloat("ASK"));
                    avg = avg + rs1.getFloat("ASK");
                }
                j++;
            }
            rs1.close();

            System.out.println("i am out");
            avg = avg / 15;
            changepercent = ((rs.getFloat("ASK") - avg) / avg) * 100;
            stocklist.add(df.format(changepercent));
            stocklist.add("ETE");
            stocklist.add("HUN");
            stocklist.add("ALU");
            stocklist.add("ETE");
            stocklist.add("HUN");
            stocklist.add("ALU");
            stocklist.add("ETE");
            stocklist.add("HUN");
            hntm.addRow(stocklist);
        }
    }
    rs.close();
    stmt.close();
    c.close();
} catch (Exception e) {
    System.err.println(e.getClass().getName() + ": " + e.getMessage());
    System.exit(0);
}

Simulant.. 9

你不应该重用一个Statement.创建新查询时,需要使用新的Statement对象.替换rs1 = stmt.executeQuery("SELECT ASK FROM '" + title + "' ;");rs1=c.createStatement().executeQuery("SELECT ASK FROM '" + title + "' ;");



1> Simulant..:

你不应该重用一个Statement.创建新查询时,需要使用新的Statement对象.替换rs1 = stmt.executeQuery("SELECT ASK FROM '" + title + "' ;");rs1=c.createStatement().executeQuery("SELECT ASK FROM '" + title + "' ;");

推荐阅读
乐韵答题
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有