如何在MySQL中设置auto_increment字段的preparedStatement()值

时间:2017-12-13 22:01:21

标签: mysql javadb

请注意,我有一个名为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个字段中插入一些数据而不考虑billno,因为它是一个auto_increment列。 我在互联网上搜索了一个解决方案,但没有找到任何有效的方法。

以下是我对此的看法:

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 forum提出。因此,当我运行时,我收到此错误消息: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);

那仍然无效。

请问我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

您应指定要插入的列:

"insert into sales(columnname, columnname, columnname,columnname) values(?, ?, ?, ?)";

并省略自动增量列。自动增量将自动递增。

或者你可以像这样传递零:

"insert into sales(autoincrementcolumn, columnname, columnname, 
columnname,columnname) values(0, ?, ?, ?, ?)";