2013-07-08 2 views
0

Этот код извлекает только 1 запись из базы данных.Не удается получить более одного результата из набора записей

Как извлечь отдых записи из базы данных с помощью следующей кнопки

public void Next() 
{ 
    Connection con=null; 
    ResultSet rs=null; 

    try { 
    con=DBConnection(); 
    Statement stmt=con.createStatement(); 
    rs= stmt.executeQuery("select * from info where id=1"); 

    while(rs.next()) 
    {    
     t1.setText(rs.getString("Name")); 
     t2.setText(rs.getString("Branch"));    
    } 
    } catch (Exception e) { 
    // TODO: handle exception 
    }finally{ 
    try { 
     rs.close(); 
    } catch (SQLException err) { 
     JOptionPane.showMessageDialog(btnnext, err.getMessage()); 
     // TODO: handle exception 
    } 
    } 
    //return rs; 
} 
+4

В вашей схеме вы всегда меняете те же объекты t1 и t2. Поэтому имеет значение только последний ряд. –

+0

, но при нажатии следующей кнопки его выборка только 1 запись из базы данных .... – VVV

+0

как получить остальные записи – VVV

ответ

1

поместить данные в список.

List<SomeObject> list = new ArrayList(); 
     while(rs.next()) 
        { 
      SomeObject obj = new SomeObject(); 
      obj.setName(rs.getString("Name")); 
      obj.setBranch(rs.getString("Branch")); 
      list.add(obj); 
        } 

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

И SomeObject:

public class SomeObject { 

    String name; 
    String branch; 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public String getBranch() { 
     return branch; 
    } 

    public void setBranch(String branch) { 
     this.branch = branch; 
    } 

} 
3

Сначала это сделать в 2 этапа:

Создание соединения с базой данных вне следующий метод(), если вы не можете получить другие записи:

Connection con=null; 
    ResultSet rs=null; 

    try { 
     con=DBConnection(); 
     rs = con.createStatement().executeQuery("select * from info where id=1"); 
    } 

Во-вторых, итерацию по запросу:

public boolean Next() 

{ 
if(!rs.next()) { //if no next then we should deactivate the next button 
    return false; 
    } else { 
    t1.setText(rs.getString("Name")); 
    t2.setText(rs.getString("Branch")); 
    return true; 
    } 
} 

Также убедитесь, что следующий запрос:

выберите * от информации, где ID = 1

будет возвращать более 1 строку, вы можете попробовать использовать запрос, который не имеет, где и возвращается больше строк.

+0

Спасибо, я отредактировал ограничение. –

0

Я принимаю Next() - это метод, выполняемый при каждом нажатии кнопки. Если это так, то вам необходимо убедиться, что вы сохранили за пределами этот метод, чтобы вы могли циклически перебирать результаты при каждом нажатии кнопки.

В настоящее время вы выполняете запрос, а затем циклически переключаетесь на последнюю запись каждый раз, когда нажимаете кнопку.

Использование Java naming conventions и начать свой метод со строчной 'п'

0

SetText() внутри цикла While не имеет смысла. он всегда будет возвращать вам последнюю строку. Вы должны поместить свои записи в список с помощью цикла While и делать то, что когда-либо захотите с ним на улице.

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