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

标签 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 提出的。因此,当我运行该命令时,我收到此错误消息:列计数与第 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, ?, ?, ?, ?)";

关于mysql - 如何在MySQL中设置auto_increment字段的preparedStatement()值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47802771/

相关文章:

java - Hibernate max 查询无法检索数据

java - 如何将文本文件导入到 java DB 中?

tomcat - 无法将 Java DB 与 ZK 框架一起使用 - 错误 : Cannot load JDBC driver class 'org.apache.derby.jdbc.ClientDriver'

mysql - 循环在 Sub 中不断重复

mysql - 父亲/丈夫姓名的数据库设计。使用一个公共(public)列还是单独的列来存储名称?

MySql:选择类别 id=2 和 3 的所有帖子

python - Django 通过多对多 ORM 对象中的多个标签进行过滤

mysql - 我的 Rails 应用程序中的随机 MySQL 异常

glassfish - 在 GlassFish 上自动启动 JavaDB (Derby)

java - 想要向我的代码添加验证,如果表不存在,则应该在 java 中创建新表