2015-02-02 4 views
0

Мне нужно получить только некоторые определенные строки из ResultSet, потому что у меня есть метод absolute() ResultSet и поместили значения этого строка в LinkedHashMap. Но когда я выполняю код, только последняя строка печатается не всеми указанными строками. Код:Как получить все значения из LinkedHashMap в java при использовании метода ResulSet.absolute()

public LinkedHashMap <Date, Double> reference() { 
    int rowCounter = 0; 


    String a[][] = new String[46][2]; 
    int i = 0; 
    try { 
    con = getConnection(); 
    stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); 
    String sql = "select logtime,beam_current from INDUS2_BDS.dbo.DCCT where logtime between '2014-10-10 07:17:00' and '2014-10-10 08:46:00'" + 
     "and (beam_current like '%9.96' or beam_current like '%9.97' or beam_current like '%9.98' or beam_current like '%9.99' or beam_current like '%0' or beam_current like '%_0.01' or beam_current like '%_0.02' or beam_current like '%_0.03' or beam_current like '%_0.04' or beam_current like '%_0.05' or beam_current like '%_0.06')"; 
    stmt.executeQuery(sql); 
    rs = stmt.getResultSet(); 



    while (rs.next()) { 

     for (int j = 0; j < 2; j++) 

     { 

     a[i][j] = rs.getString(j + 1); 
     } 

     i++; 
     rowCounter++; 

     System.out.println(rowCounter); 
     if (rowCounter == 4 || rowCounter == 9 || rowCounter == 11 || rowCounter == 13 || rowCounter == 15) 
     rs.absolute(4); 
     map.put(rs.getDate(1), (double) rs.getFloat(2)); 
     rs.absolute(9); 
     map.put(rs.getDate(1), rs.getDouble(2)); 
     rs.absolute(11); 
     map.put(rs.getDate(1), rs.getDouble(2)); 
     rs.absolute(13); 
     map.put(rs.getDate(1), rs.getDouble(2)); 
     rs.absolute(15); 
     map.put(rs.getDate(1), rs.getDouble(2)); 
     rs.absolute(16); 
     map.put(rs.getDate(1), rs.getDouble(2)); 
     rs.absolute(18); 
     map.put(rs.getDate(1), rs.getDouble(2)); 

    } 
    } 


} catch (Exception e) { 
    System.out.println("\nException " + e); 
} finally { 
    closeConnection(stmt, rs, con); 
} 

return map; 

Я хочу все строки, указанные в абсолютном методе() в результирующем быть восстановлена. Как это сделать?

ответ

0

resultset.absolute() -> Перемещает курсор к указанному номеру строки в этом объекте ResultSet.

После выполнения цикла while курсор в наборе результатов указывает на последнюю строку. Набор результатов перемещает курсор последовательно, пока вы не назовете абсолютным. Из-за этого вы всегда получаете последний элемент.

+0

, да, вы правы, поэтому я должен закрыть мой цикл while, если цикл? Но когда я это делаю, ничего не просчитывается – MES

1

Использование коллекция Списка для добавления пары ключа Map/значения, как

List<LinkedHashMap<String,String>>l=new ArrayList<LinkedHashMap<String,String>>(); 
l.add(map); 

Тогда возврата переменного списка л.