【发布时间】:2019-01-09 15:52:47
【问题描述】:
我正在使用 java 中的 MySQL 库执行查询。
在我的 db 结构中有一个名为 cod_nfs 的列(主键,不是 null 和 auto_increment)。
通常在每个插入查询中我将值设置为 null 并在查询执行后递增最后一个 id 但在 java 中这样做会给我异常。
代码如下:
String SQL = "INSERT INTO infosetdata(cod_nfs,savingDate_nfs,attributeValue_nfs,codInfoSet_nfs,codColumn_nfs,codRow_nfs) VALUES (null,'2019-01-08',?,?,?,?)";
for( String value : values ) {
ps = conn.prepareStatement(SQL);
ps.setString(1, value);
ps.setInt(2, dataId);
ps.setInt(3, y);
ps.setInt(4, x);
ps.executeUpdate();
y++;
}
如何使用自动递增 id 执行查询?
【问题讨论】:
-
您能否尝试从插入语句中删除 autu 递增列。 Try::> String SQL = "INSERT INTO infosetdata(savingDate_nfs,attributeValue_nfs,codInfoSet_nfs,codColumn_nfs,codRow_nfs) VALUES ('2019-01-08',?,?,?,?)";
-
我做到了,我得到了这个异常:线程“main”java.sql.SQLException中的异常:字段'cod_nfs'没有默认值
-
正确的方法是不在插入列表中指定
cod_nfs。如果您遇到该异常,则它不是自动增量列。请将表格的 DDL 添加到您的问题中。 -
是的,你是对的。我的管理员构建了数据库结构,我确信 cod_nfs 是一个 auto_increment 列。谢谢
-
你可以尝试运行命令:ALTER TABLE infosetdata MODIFY
cod_nfsINT(11) NOT NULL AUTO_INCREMENT;