CREATE TABLE borrow( number BIGINT, borrowname varchar(10), name varchar(10), id BIGINT, phone BIGINT, borrowtime date, returntime date, borrownum BIGINT, PRIMARY KEY(number) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE reader( number BIGINT, borrowname varchar(10), name varchar(10), id BIGINT, phone BIGINT, sex varchar(10), borrownum BIGINT, originalbalance DOUBLE, PRIMARY KEY(number) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; DELIMITER %% CREATE TRIGGER reader_borrow AFTER INSERT ON reader FOR EACH ROW INSERT INTO borrow VALUES( NEW.number, NEW.borrowname, NEW.name, NEW.id, NEW.phone, NOW(), DATE_ADD(NOW(),INTERVAL 30 DAY), NEW.borrownum ) %% DELIMITER ; INSERT INTO reader VALUES(1,'《所有》','刘江林',20217329,17264440107,'1',100);出现1136 - Column count doesn't match value count at row 1错误
时间: 2023-12-27 11:05:05 浏览: 128
在执行最后一条SQL语句时,你在reader表中插入了7个值,但是reader表中定义了8个列。因此,你需要在INSERT语句中指定8个值,或者在表中删除一个列。
可以将INSERT语句修改为:
```
INSERT INTO reader VALUES(1,'《所有》','刘江林',20217329,17264440107,'1',100, 0.0);
```
其中0.0是originalbalance列的默认值。这样就可以成功插入一条记录了。
相关问题
CREATE TABLE borrow( number BIGINT, borrowname varchar(10), name varchar(10), id BIGINT, phone BIGINT, borrowtime date, returntime date, borrownum BIGINT, PRIMARY key(number) )ENGINE=InnoDB DEFAULT CHARSET=utf8;create table reader( number BIGINT, borrowname varchar(10), name varchar(10), id BIGINT, phone BIGINT, sex varchar(10), borrownum BIGINT, originalbalance double, PRIMARY KEY(number) )ENGINE=InnoDB DEFAULT CHARSET=utf8;delimiter%% CREATE TRIGGER reader_borrow AFTER INSERT on reader FOR EACH ROW INSERT INTO borrow VALUES(new.number,new.borrowname,new.name,new.id,new.phone,NOW(),DATE_ADD(NOW(),INTERVAL 30 day),new.borrownum)%% delimiter;之间的触发插入语句
这是一个在插入 reader 表后自动触发的触发器,将相关信息插入到 borrow 表中。具体的触发器语句如下:
```
delimiter %%
CREATE TRIGGER reader_borrow AFTER INSERT ON reader FOR EACH ROW
INSERT INTO borrow VALUES(new.number, new.borrowname, new.name, new.id, new.phone, NOW(), DATE_ADD(NOW(), INTERVAL 30 DAY), new.borrownum);
%%
delimiter ;
```
这个触发器定义了在每向 reader 表中插入一行数据时,自动执行一次插入操作,将对应信息插入到 borrow 表中。这个触发器使用了 MySQL 的 DATE_ADD 函数来计算还书时间,将借书时间加上 30 天得到还书时间。注意,在本例中,分隔符被设置为 "%%",以避免 SQL 语句中的分号与触发器定义中的分号冲突。最后,将分隔符重置为默认值 ";"。
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数据库。你可以根据需要添加菜单项并实现对应的功能。
当然,由于时间和篇幅的限制,以上代码仅为一个简单的示例,并没有实现具体的功能。如果需要更详细的代码,请提供更具体的需求,我会尽力提供帮助。
阅读全文