2011-07-13 90 views
0

如何從Access數據庫添加項目到組合框?java將項目從數據庫添加到JcomboBox

我的代碼:

String sql = "SELECT * FROM Owner,Cars " 
     + "WHERE carID=CarID_ " 
     + "ORDER BY OwnerName;"; 
    ResultSet dane = zadanie.executeQuery(sql); 
    while (dane.next()) 
    { 
     comboBox_2.addItem(new(dane.getString("year"))); 
    } 
    zadanie.close(); 
} catch(SQLException sqe) { 
    System.out.println("SQl error"); 
} 

但將 「SQL錯誤」 順便說一句這樣的代碼:

String sql="SELECT * FROM Cars ;"; 
    ResultSet dane = zadanie.executeQuery(sql); 
    while (dane.next()) 
    {  

     System.out.println(
       dane.getString("CarName")+"\t" + 
       dane.getString("year")); 

    } 
    zadanie.close(); 
} catch(SQLException sqe) { 
    System.out.println("SQl error"); 
} 

作品完美,但那樣的話寫它顯示錯誤

comboBox_2.addItem(new String(dane.getString("CarName"))); 
     System.out.println(
       dane.getString("CarName")+"\t" + 
       dane.getString("year")); 
+0

僅插入數據庫中的渴望物品 –

+2

以後有兩件事可以幫助您。首先 - 瞭解如何處理異常以幫助調試代碼。在catch(SQLException sqe)塊內放置sqe.printStackTrace(System.out);打印堆棧跟蹤以解決問題的原因。這將向終端打印遇到的具體問題,例如你的SQL查詢很糟糕! 第二 - 提高你的SQL技能! – GordyD

回答

2

如果您在EDT以外的線程中,必須確保在EDT上發佈修改Swing組件的事件。實用程序類SwingUtilities允許您這樣做。

SwingUtilities.invokeLater(new Runnable(){ 
    @Override 
    public void run(){ 
     comboBox_2.addItem(new(dane.getString("year"))); 
    } 
}); 

但這不是你目前的問題。而不是打印出無用的消息(即SQL錯誤),爲什麼不打印堆棧跟蹤?另外,我建議你閱讀SQLException

0

它看起來像它的一個問題與您的SQL ...該語句正確執行以外的Java的?

SELECT * FROM owner JOIN cars USING (carID) ORDER BY OwnerName; 

可能對你更好嗎?

+0

根本無法使用(也是sql錯誤)並且不會插入任何項目。 –

1

您在SQL中發生錯誤WHERE carID = CarID_"您錯過了Car的實際ID。希望這可以幫助!

+0

nopeproblem加入itemin combobox,因爲使用system.out.println向我顯示了我想要的所有數據以及caID –

+0

那麼,我的意思是實際的SQL語句有錯誤。在這種情況下,你的sql語句如下:'String sql =「SELECT * FROM Owner,Cars WHERE carID = CarID_ ORDER BY OwnerName;」'注意carID沒有ID。我收集它應該讀取類似'String sql =「SELECT * FROM Owner,Cars WHERE carID = CarID_5 ORDER BY OwnerName;」' –

相關問題