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

问题

  • 想要向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"
  • 查看数据库表是否设计为自动递增
    java实现向主键id自增的表中插入数据_第1张图片
剩下的就是愉快的玩耍啦!!

祝大家編程路上一帆风顺

你可能感兴趣的:(Java,API接口设计)