java实现向主键id自增的表中插入数据

本文介绍了如何在Java中向使用主键自动递增的MySQL表中插入数据,避免手动设置主键导致的工作量增加和重复键错误。通过调整数据库配置和代码实现,成功解决问题,确保愉快地进行数据库操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题
  • 想要向mysql数据库中插入一条记录,因为设计的表时自动递增的,那么如果插入多条记录,每次都要设置主键的话工作量会很大,而且难免会有重复的主键,这时候就要使用强大的主键自增的功能了。
在没有使用主键自增时的代码是这样子的
String insertSQL = "insert into user_t values(1, 'zzz', 'aaa', 20);";
statement = connection.prepareStatement(insertSQL);
statement.executeUpdate();

难免会报这样的错:

com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry '1' for key 'PRIMARY'
在使用主键自增功能之后的代码:
String insertSQL = "insert into user_t(user_name, password, age) values(?, ?, ?)";              

statement = connection.prepareStatement(insertSQL, PreparedStatement.RETURN_GENERATED_KEYS);

statement.setString(1, "zzz");
statement.setString(2, "aaa");
statement.setInt(3, 21);

statement.execute();

ResultSet rs = statement.getGeneratedKeys();

int id = 0;

if (rs.next()) {
    id = rs.getInt(1);
}

但是又会报这样的错:

java.sql.SQLException: Field 'id' doesn't have a default value
完美解决方案:
  • 在my.ini文件中修改配置
#sql-mode="STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION" (注释掉)
sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
  • 查看数据库表是否设计为自动递增
    这里写图片描述
剩下的就是愉快的玩耍啦!!

祝大家編程路上一帆风顺

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值