INSERT 语句与 FOREIGN KEY 约束"FK__Borrow__Bbook_nu__239E4DCF"冲突。该冲突发生于数据库"BookManage",表"dbo.Reader", column 'Bbook_num'
时间: 2023-12-12 18:02:11 浏览: 94
这个错误提示是因为在插入 Reader 表的数据时,该记录中的 Bbook_num 字段的值在 Borrow 表中找不到对应的值,因为在 Reader 表中的 Bbook_num 字段设置了 FOREIGN KEY 约束"FK__Borrow__Bbook_nu__239E4DCF",即该字段引用了 Borrow 表中的 Bbook_num 字段作为外键,如果 Reader 表中插入的数据中的 Bbook_num 字段的值在 Borrow 表中不存在,就会出现该错误。解决方法可以是先插入 Borrow 表中的数据,再插入 Reader 表中的数据,或者在插入 Reader 表中的数据时,确保 Bbook_num 字段的值在 Borrow 表中存在。
相关问题
CREATE TABLE Reader ( reader_id INT, name VARCHAR(50), gender VARCHAR(10), birthdate DATE, phone VARCHAR(20), PRIMARY KEY (reader_id) ); CREATE TABLE Book ( book_id INT, title VARCHAR(100), author VARCHAR(50), publisher VARCHAR(50), publish_date DATE, price DECIMAL(8,2), PRIMARY KEY (book_id) ); CREATE TABLE Borrow ( borrow_id INT, reader_id INT, book_id INT, borrow_date DATE, return_date DATE, status INT, PRIMARY KEY (borrow_id), FOREIGN KEY (reader_id) REFERENCES Reader(reader_id), FOREIGN KEY (book_id) REFERENCES Book(book_id) ); CREATE TABLE Library ( library_id INT, book_id INT, quantity INT, PRIMARY KEY (library_id), FOREIGN KEY (book_id) REFERENCES Book(book_id) ); CREATE TABLE Category ( category_id INT, category_name VARCHAR(50), PRIMARY KEY (category_id) ); CREATE TABLE Admin ( admin_id INT, name VARCHAR(50), gender VARCHAR(10), phone VARCHAR(20), PRIMARY KEY (admin_id) );用Java连接上面数据库用户名root密码as101213数据库名books创建一个图书借阅系统的框架编程、实现UI重点实现程序的用户界面(UI),用户界面UI推荐使用SWING开发,界面务求美观,具有基本的菜单功能。
好的,下面是一个简单的图书借阅管理系统的Java框架代码,使用了JDBC连接MySQL数据库,并使用了Swing开发用户界面:
```java
import java.sql.*;
import javax.swing.*;
public class LibrarySystem extends JFrame {
private Connection con;
private Statement stmt;
private ResultSet rs;
public LibrarySystem() {
super("图书借阅管理系统");
setSize(800, 600);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
// 创建菜单栏
JMenuBar menuBar = new JMenuBar();
setJMenuBar(menuBar);
// 创建“读者管理”菜单
JMenu readerMenu = new JMenu("读者管理");
menuBar.add(readerMenu);
// 创建“借书管理”菜单
JMenu borrowMenu = new JMenu("借书管理");
menuBar.add(borrowMenu);
// 创建“还书管理”菜单
JMenu returnMenu = new JMenu("还书管理");
menuBar.add(returnMenu);
// 创建“图书管理”菜单
JMenu bookMenu = new JMenu("图书管理");
menuBar.add(bookMenu);
// 创建“系统设置”菜单
JMenu systemMenu = new JMenu("系统设置");
menuBar.add(systemMenu);
// 连接数据库
try {
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/books", "root", "as101213");
stmt = con.createStatement();
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "连接数据库失败:" + e.getMessage(), "错误", JOptionPane.ERROR_MESSAGE);
System.exit(0);
}
setVisible(true);
}
public static void main(String[] args) {
new LibrarySystem();
}
}
```
以上代码实现了一个基本的用户界面,并且连接了MySQL数据库。你可以根据需要添加菜单项并实现对应的功能。
当然,由于时间和篇幅的限制,以上代码仅为一个简单的示例,并没有实现具体的功能。如果需要更详细的代码,请提供更具体的需求,我会尽力提供帮助。
帮我给这一条CREATE TABLE borrow_record( book_id CHAR(20) NOT NULL PRIMARY KEY, reader_id CHAR(8) NOT NULL, return_date DATETIME NOT NULL, FOREIGN KEY (book_id) REFERENCES book(book_id) FOREIGN KEY (reader_id)REFERENCES reader(reader_id) );添加数据
以下是向 `borrow_record` 表中插入数据的 SQL 语句:
```
INSERT INTO borrow_record (book_id, reader_id, return_date)
VALUES
('B001', 'R001', '2021-06-30 10:00:00'),
('B002', 'R002', '2021-07-10 14:30:00'),
('B003', 'R003', '2021-07-15 09:45:00');
```
这里插入了三条借阅记录,每条记录包括书籍编号 (`book_id`)、读者编号 (`reader_id`) 和归还日期 (`return_date`)。插入的数据需要符合表的约束条件,如书籍编号和读者编号必须存在于 `book` 表和 `reader` 表中,并且书籍编号必须是主键。
阅读全文