次のSQLテーブルがあります:
著者:
Id Name
2 John Smith
書籍:
Id AuthorID Title
1 2 Shreak
著者テーブルから著者を表示するドロップダウンボックスと、新しい本を入力するためのテキストボックスと保存ボタンを備えた 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);
}
}
私は初心者で、テーブルに新しいデータを入力するのに苦労しています。プログラムはコンパイルされますが、books テーブルの AUTHOR ID と TITLE の両方に NULL が表示されます。作成者 ID が Authors テーブルから自動的に検索され、そこから適切な ID 番号が与えられるように、テーブルを正しく設定するにはどうすればよいですか。著者 ID は books テーブルの外部キーであることに注意してください。