2016-03-11 3 views
0

Это мой код:поиск DB между двумя датами пропуска первого результата

String sql = "select bId, bQuantity, bTotal from billsMaster where bDate BETWEEN ? AND ? "; 
//and bDate between ? and ? 
try { 
    pst = conn.prepareStatement(sql); 
    //pst.setString(1, tf_itemSearch.getText()); 

    pst.setString(1, tf_startDate.getText()); 
    pst.setString(2, tf_endDate.getText()); 
    rs = pst.executeQuery(); 

    if (rs.next()) 
     tbl_billSearch.setModel(DbUtils.resultSetToTableModel(rs)); 
} catch (SQLException e) { 
    JOptionPane.showMessageDialog(null, e); 
} 

Первое появление resultset не вставить его в tableModel. Итак, результаты запроса sql: 5, 3, 1, 6 и т. Д. 5 не вставлено в таблицу модели. Почему нет?

+0

Каковы типы 'tf_startDate' и' tf_endDate' и почему вы их преобразуете в строки? – pleft

+0

Не передавать даты как строки. Передайте правильную 'java.util.Timestamp' –

+0

, вы должны использовать' do {// setModel} while (rs.next()); 'вместо' if' – aabeeshake

ответ

1

Это ваша проблема:

if (rs.next()) 

next() увеличивает результирующий набор курсора, поэтому команда после того, как будет исключить первый результат. То, что вы, вероятно, хотите, это isBeforeFirst(), который возвращает false, если курсор не находится в начале набора результатов ИЛИ если набор результатов пуст.

+0

Я использовал этот код if (rs.next()) { rs2 = pst.executeQuery(); tbl_billSearch.setModel (DbUtils.resultSetToTableModel (rs2)); } это работает .. OK , но это законно? .. или делать ошибки в жестком использовании? !! –

+0

Что такое 'rs2' ?? Что вы подразумеваете под «законным»? (Компилятор позволяет вам это сделать? Тогда это ... «законно».) Вам нужно быть более ясным, когда спрашиваете о последующих действиях. –

+0

это прекрасно работает .. Я имею в виду ... этот новый код я выполняю сам запрос второй раз .. это так правильно, потому что я беспокоился о будущих ошибках, которые выходят и попадают в сложную проблему –

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