【发布时间】:2012-10-07 12:49:33
【问题描述】:
我有以下 sql 表:
作者:
Id Name
2 John Smith
书籍:
Id AuthorID Title
1 2 Shreak
我正在尝试通过 GUI 将更多书籍添加到书籍表中,该 GUI 有一个下拉框来显示作者表中的作者,以及一个用于输入新书的文本框和一个保存按钮。以下是对应保存按钮的:
pprivate void save_bookActionPerformed(java.awt.event.ActionEvent evt) {
try {
String sql = "INSERT into books (AuthorId,Title) VALUES (?,?)";
pst = con.prepareStatement(sql);
pst.setInt(1, author_name_combo.getSelectedItem());
pst.setString(2, book_name.getText());
pst.executeUpdate();
JOptionPane.showMessageDialog(null, "New Book has been added");
} catch (Exception e) {
JOptionPane.showMessageDialog(null, e);
}
}
private void FillCombo(){
try {
con = DriverManager.getConnection(url, user, password);
String sql = "SELECT * FROM Authors";
pst = con.prepareStatement(sql);
rs = pst.executeQuery();
while(rs.next()) {
String author = rs.getString("Name");
author_name_combo.addItem(author);
}
} catch (Exception e) {
JOptionPane.showMessageDialog(null, e);
}
}
我是一个初学者,我正在努力用新数据填充表格。程序编译但书籍表显示 NULL 为 AUTHOR ID 和 TITLE。如何正确填充表,以便自动从 Authors 表中查找作者 ID 并从那里给出适当的 ID 号。请注意作者 ID 是书籍表中的外键。
【问题讨论】:
-
考虑使用调试器或在代码中添加
System.out.println(someVariableThatYouWantToTestHere),看看哪些地方不能正常工作。 -
问题最终出在数据类型不兼容上。请向我们展示您的表格定义。还要获取 JCombobox 的值,请使用 getSelectedItem()
-
getSelectedItem() 与 setInt 不兼容
-
请看上面的编辑代码,用什么代替 getNAME() 来正确更新作者 ID
-
@OuldAbba 是正确的。
getSelectedItem()将获得 JComboBox 模型持有的选定对象。然后,您将调用该对象必须的任何方法来获取作者 ID int。
标签: java sql database swing jcombobox