JDBC 复习5 mysql 的自增长主键 auto_increment

MySQL 自增长主键

(1)如果把一个NULL插入到一个AUTO_INCREMENT数据列里去,MySQL将自动生成下一个序列编号。编号从1开始,并1为基数递增。
(2)把0插入AUTO_INCREMENT数据列的效果与插入NULL值一样。但不建议这样做,还是以插入NULL值为好。
(3)当插入记录时,没有为AUTO_INCREMENT明确指定值,则等同插入NULL值。
(4)当插入记录时,如果为AUTO_INCREMENT数据列明确指定了一个数值,则会出现两种情况,情况一,如果插入的值与已有的编号重复,则会出现出错信息,因为AUTO_INCREMENT数据列的值必须是唯一的;情况二,如果插入的值大于已编号的值,则会把该插入到数据列中,并使在下一个编号将从这个新值开始递增。也就是说,可以跳过一些编号。
(5)如果用UPDATE命令更新自增列,如果列值与已有的值重复,则会出错。如果大于已有值,则下一个编号从该值开始递增。

测试代码

项目结构(记得添加mysql的驱动jar包)

数据库连接配置文件

建表

package dbex.mysql;

import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import dbex.DBUtil;

/**
 * 
 * @ClassName: AutoKey 
 * @Description: 测试mysql 的 自增长主键
 * @author penny
 * @date 2017年11月29日 下午1:07:17 
 *
 */
public class AutoKey {

	void doAuto() throws SQLException, IOException{
		Connection conn = DBUtil.getConnection();
		PreparedStatement ppst = null;
		ResultSet rs = null;
		
		try {
			ppst = conn.prepareStatement("insert into auto_key(txt) values('testAuto')");
			for (int i = 0; i <100; i++) {
				ppst.addBatch();
			}
			ppst.executeBatch();
			ppst= conn.prepareStatement("select * from auto_key");
			rs = ppst.executeQuery();
			while(rs.next()){
				System.out.println(rs.getInt(1)+"	"+rs.getString(2));
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally{
			DBUtil.closeAll(conn, ppst, rs);
		}
	}
	public static void main(String[] args) throws SQLException, IOException {
		new AutoKey().doAuto();
	}
}

效果展示

原文地址:https://www.cnblogs.com/humi/p/7919937.html