如何从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"));
答案 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;
可能会为你做得更好吗?