2013-07-08 60 views
0

此代碼僅從數據庫中檢索1條記錄。無法從記錄集檢索多個結果

如何使用Next按鈕

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步:

創建next()方法之外的數據庫連接,除非,你不能獲取其他記錄:

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; 
    } 
} 

還請確保以下查詢:

SELECT * FROM信息其中id = 1

將返回超過1行,你可以嘗試使用它沒有在那裏和返回查詢更多的行。

+0

謝謝,我編輯了限制。 –

0

我假設Next() 是每次按下按鈕時執行的方法。如果是這樣,那麼您需要確保將此方法保存在以外的ResultSet,以便每次按下按鈕時都可以循環顯示結果。

當前您正在執行查詢,然後每次按下按鈕時循環到最後一條記錄。

使用Java naming conventions並以小寫開始你的方法 'N'

0

的setText()While循環裏面就沒有意義了。它會一直返回給你最後一行。 你應該把你的記錄放入一個列表中,在While循環中,並且在外面做你想做的事。