2014-12-12 6 views
1

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

Мой код:

String query = "SELECT * FROM ebloodfinder.tempids"; 

try { 
    int a = db.updateResult(query).getInt("did"); 
    int b = db.updateResult(query).getInt("bid"); 
    dor.setDid(++a); 
    dor.setBid(++b); 
} catch (ClassNotFoundException | SQLException ex) { 
    Logger.getLogger(testForm.class.getName()).log(Level.SEVERE, null, ex); 
} 

jtxt_Did.setText(dor.getDid()+""); 
jtxt_Did_DR.setText(dor.getBid()+""); 

Это происходит исключение:

/* Dec 12, 2014 2:22:37 PM extra.testForm <init> 
SEVERE: null 
java.sql.SQLException: Before start of result set*/ 
+0

Вы не можете принять по два ответа ни на один вопрос. Вы можете принять только один ответ на вопрос. И вы должны принять, что является лучшим решением. :) – gprathour

ответ

2

Вы должны переместить курсор в первую строку, а затем запросить данные.

int a = 0, b = 0; 

try { 
    ResultSet rs = db.updateResult(query) 

    if (rs.next()) { 
     a = rs.getInt("did"); 
     b = rs.getInt("bid"); 
    } 
} 
catch (ClassNotFoundException | SQLException ex) { 
    //blah blah 
} 
0

Когда вы получите результаты в ResultSet ее курсор находится в положении Before First.

Some Hint

Скажем, если данные начинаются с 1-го ряда, то курсор будет на 0.

Что вам нужно сделать, это переместить курсор на первую позицию для чтения данных.

Для этого необходимо вызвать метод rs.next(), и этот метод возвращает boolean. Если он переместится в следующую позицию, тогда истинно, если не будет более дальнейших позиций, тогда будет false.

Тот же метод может использоваться для повторения всех строк, извлеченных с сервера.

while(rs.next()){ 
    //get data 
} 
Смежные вопросы