2014-02-12 2 views
4

Я не могу продолжить процесс, потому что я получаю ResultSet при запуске этого кода. Я добавляю значение после 15 строк таблицы базы данных sqlite, и я хочу найти среднее значение 15 строк, и это должно быть хранилище в ArrayList.java.sql.SQLException: ResultSet closed

Вот код: -

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<String> stocklist = new ArrayList<String>(); 
      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); 
} 
+0

Попробуйте создать еще одно заявление внутри петли RS1 –

+0

Спасибо много, его работа ... WOW – Laxmeena

ответ

8

вы не должны повторно заявление. Когда вы создаете новый запрос, вам нужно использовать новый объект Statement. Заменить rs1 = stmt.executeQuery("SELECT ASK FROM '" + title + "' ;"); с rs1=c.createStatement().executeQuery("SELECT ASK FROM '" + title + "' ;");

+0

Thanx, я сделал в соответствии с Вами и его работой .. – Laxmeena

+0

спасибо я понятия не имело, эту работу –

Смежные вопросы