请,我有一个名为sales
的表,该表有6列,第一列设置为auto_increment
。也就是说,我有这个表;
CREATE TABLE `sales` (
`billno` int(11) NOT NULL AUTO_INCREMENT,
`date` varchar(20) DEFAULT NULL,
`item_code` int(16) DEFAULT NULL,
`item_name` varchar(15) DEFAULT NULL,
`quantity` int(7) DEFAULT NULL,
`amount` int(15) DEFAULT NULL,
PRIMARY KEY (`billno`));
现在,在一个Java项目中,我想将一些数据插入5个字段中,因为它是一个自动_increment列,因此不考虑billno
。我在Internet上搜索了解决方案,但没有找到我的情况中有用的东西。
这就是我的理解方式:
String query = "insert into sales values(?, ?, ?, ?, ?)";
stmtDue = conn.prepareStatement(query);
stmtDue.setString(1, date);
stmtDue.setInt(2, itemCode);
stmtDue.setString(3, prodName);
stmtDue.setInt(4, quantity);
stmtDue.setInt(5, totalPrice);
int rowset = stmtDue.executeUpdate();
上述方法是由Coderanch论坛提出的。因此,当我运行时,我收到了此错误消息:Column count doesn't match value count at row 1
。
我也尝试过:
String query = "insert into sales values(DEFAULT, ?, ?, ?, ?, ?)";
stmtDue = conn.prepareStatement(query);
stmtDue.setString(2, date);
stmtDue.setInt(3, itemCode);
stmtDue.setString(4, prodName);
stmtDue.setInt(5, quantity);
stmtDue.setInt(6, totalPrice);
仍然不起作用。
请如何解决此问题?
您应该指定要插入的列:
"insert into sales(columnname, columnname, columnname,columnname) values(?, ?, ?, ?)";
并忽略"自动增量"列。自动增量将自动增加。
或您可以以这样的零传递:
"insert into sales(autoincrementcolumn, columnname, columnname,
columnname,columnname) values(0, ?, ?, ?, ?)";