2011-03-08 37 views
0

我在滾動數據庫的所有內容。如何正確做到這一點:如何在java中滾動瀏覽mysql數據庫

conc conclass = new conc(); 
     Connection conn = conclass.dbConnect(); 
     try{ 


     Statement statement=conn.createStatement(); 
     ResultSet rs; 
     String sql; 
     rs=statement.executeQuery("SELECT * FROM q_table"); 

     if(rs.next()){ 
     String yo=rs.getString("Question"); 
     jTextArea1.setText(yo); 
     } 





     }catch(Exception e){e.printStackTrace();} 

這是我的用於連接到數據庫類:

public Connection dbConnect() { 
    try { 
     String db_connect_string="jdbc:mysql://localhost:3306/questions"; 
     String db_userid="root"; 
     String db_password="1234"; 
     Class.forName("com.mysql.jdbc.Driver").newInstance(); 
     Connection conn = DriverManager.getConnection(db_connect_string, db_userid, db_password); 


     return conn; 

    } catch (Exception e) { 
     e.printStackTrace(); 
     return null; 
    } 
} 

什麼是錯我的代碼?它會在我點擊滾動按鈕時加載第一條記錄。但是當我再次點擊它。它什麼都不做。

+0

其中是滾動按鈕。順便說一下,最有可能的數據庫連接已關閉。 – Nishant 2011-03-08 09:37:54

+0

第一個代碼塊在jButtonActionPerformed事件中。我認爲問題在於每次點擊按鈕時連接都會更新,這就是爲什麼我總是看到相同的結果。我的問題是如果它不應該在按鈕事件中,我會在哪裏放置初始化連接的代碼。 – user225269 2011-03-08 09:47:15

回答

2

您需要保持Resultset處於打開狀態。每按一次按鈕,您必須撥打rs.next()一次。之後,一個新行將被複制到ResultSet

+1

我會反對保持ResultSet打開更長的時間。在這種情況下,您可能會忽略它,但原則上保持ResultSet處於打開狀態等待用戶操作是錯誤的。當你開始時將數據讀到內存中,從那裏迭代數據。 – Zds 2011-03-08 10:17:11

+0

@Zds:同意;我忘了提這個。 – 2011-03-08 10:17:58

4

收集從表中的所有結果(我想你指的是表,而不是整個數據庫):

while(rs.next()) { 
    String yo=rs.getString("Question"); 
    // add 'yo' to a list or similar... 
} 

您需要在您的ResultSet進行迭代。 ResultSet依次滾動從數據庫返回的每一行。有關更多詳細信息,請參閱this example