java从数据库向JcomboBox添加项目

时间:2011-07-13 14:48:04

标签: java database ms-access

如何从Access数据库中向combobox添加项目?

我的代码:

    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"));

3 个答案:

答案 0 :(得分:2)

如果您在EDT以外的线程中,则必须确保在EDT上发布修改Swing组件的事件。实用程序类SwingUtilities允许您这样做。

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

但这不是你目前的问题。而不是打印出无用的消息(即 SQL错误),为什么不打印堆栈跟踪?另外,我建议你阅读SQLException

答案 1 :(得分:1)

WHERE carID = CarID_"您的SQL确实出错了您错过了汽车的实际ID。希望这有帮助!

答案 2 :(得分:0)

看起来它是你的SQL的问题...该语句是否在Java之外正确执行?

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

可能会为你做得更好吗?