2013-04-22 21 views
0

我下面這個教程有關NetBeans使數據庫: http://www.homeandlearn.co.uk/java/database_scrolling_buttons.html 我有一個按鈕,然後在我的JPanel,它必須調用此方法:數據庫Netbeans中的onclick按鈕

private void btnNextActionPerformed(java.awt.event.ActionEvent evt) {           
    try { 
     String host = "jdbc:derby://localhost:1527/Employees"; 
     String uName = "bjorn"; 
     String uPass= ""; 
     conN = DriverManager.getConnection(host, uName, uPass); 
     stmtN = conN.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); 
     String SQL = "SELECT * FROM App.Workers"; 
     rsN = stmtN.executeQuery(SQL); 

     if (rsN.next()) { 
      int id_col = rsN.getInt("ID"); 
      String id = Integer.toString(id_col); 
      String first_name = rsN.getString("First_Name"); 
      String last_name = rsN.getString("Last_Name"); 
      String job = rsN.getString("Job_Title"); 

      textID.setText(id); 
      textFirstName.setText(first_name); 
      textLastName.setText(last_name); 
      textJobTitle.setText(job); 
     } 
     else { 
      rsN.previous(); 
      JOptionPane.showMessageDialog(Workers.this, "End of File"); 
     } 
    } 
    catch (SQLException err) { 
     JOptionPane.showMessageDialog(Workers.this, err.getMessage()); 
    }  // TODO add your handling code here: 
}   

這個方法必須顯示在JPanel上的數據庫的下一個條目,但我無法得到它的工作。有人知道我在做什麼錯嗎?

+0

雖然我幾乎可以肯定你已經看到了這個網站:https://netbeans.org/kb/docs/ide/java-db.html它是另一個有關netbeans的derby數據庫的教程。但我確實想問你是否用不同的方法檢查了你的數據庫和查詢?例如,Netbeans可以直接與數據庫建立連接,並且可以用簡單的方法測試查詢,以確保查詢或db uri中沒有語法錯誤。 – GameDroids 2013-04-22 23:09:44

+0

我該怎麼做? – user1189952 2013-04-22 23:16:38

+0

我不認爲查詢是錯誤的,因爲當我使用rsN.last()而不是rsN.next()時,會顯示數據庫的最後一個條目。 – user1189952 2013-04-22 23:23:09

回答

0
 PreparedStatement pstmt = conn.prepareStatement("SELECT * FROM App.Workers",ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE); 

     ResultSet rs = pstmt.executeQuery(); 

    if(rs.next()) 
     { 
     int id_col = rsN.getInt("ID"); 
     String id = Integer.toString(id_col); 
     String first_name = rsN.getString("First_Name"); 
     String last_name = rsN.getString("Last_Name"); 
     String job = rsN.getString("Job_Title"); 

     textID.setText(id); 
     textFirstName.setText(first_name); 
     textLastName.setText(last_name); 
     textJobTitle.setText(job); 

} 
    else 
{ 
    rs.beforeFirst(); 
    JOptionPane.showMessageDialog(Workers.this, "End of File"); 
    } 

試試這個..

+0

您的代碼正在導致面板再次跳轉到第一條記錄。但我怎麼能讓它跳到下一個記錄?你的'conn'從哪裏來? – user1189952 2013-04-23 11:49:21

+0

'conn'是一個conncetion ... – karthi 2013-04-23 12:16:28

+0

你可以聲明這個語句是一個靜態變量..並刪除'rs.beforeFirst();'然後試試這個.. – karthi 2013-04-23 12:19:20

0

聲明此爲主要的Static Resultset rsN;,按照該按鈕執行的操作,您可以使用此數據庫連接

try 
    { 
    String host = "jdbc:derby://localhost:1527/Employees"; 
    String uName = "bjorn"; 
    String uPass= ""; 
    conN = DriverManager.getConnection(host, uName, uPass); 
    stmtN = conN.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); 
    String SQL = "SELECT * FROM App.Workers"; 
    Static Resultset rsN = stmtN.executeQuery(SQL); 
} 
catch (SQLException err) { 
    JOptionPane.showMessageDialog(Workers.this, err.getMessage()); 
}  // TODO add your handling code here: 

..

private void btnNextActionPerformed(java.awt.event.ActionEvent evt)    {           

    try 
    { 
    if (rsN.next()) { 
     int id_col = rsN.getInt("ID"); 
     String id = Integer.toString(id_col); 
     String first_name = rsN.getString("First_Name"); 
     String last_name = rsN.getString("Last_Name"); 
     String job = rsN.getString("Job_Title"); 

     textID.setText(id); 
     textFirstName.setText(first_name); 
     textLastName.setText(last_name); 
     textJobTitle.setText(job); 
    } 
    else { 
     rsN.previous(); 
     JOptionPane.showMessageDialog(Workers.this, "End of File"); 
    } 
} 
catch (SQLException err) { 
    JOptionPane.showMessageDialog(Workers.this, err.getMessage()); 
}  // TODO add your handling code here: 
}   

它的工作嘗試這個..

+0

你試過了嗎 – karthi 2013-04-24 10:23:07