在新增数据(执行插入语句)时MySQL自增长字段的处理

很多时候,我们设计的数据中会有自增长字段,比如序号。
然而,自增长字段在插入数据时该怎么处理呢??

1.若不做处理(爆错)

public boolean addUser(User user) {
		// TODO Auto-generated method stub 
		String sql = "insert into user values(?,?,?,?,?,?,?,?,?)";
		Object[] params = {user.getName(),user.getPassword(),user.getSex(),user.getBirthday(),user.getEmail(),user.getHobby(),
				user.getIntro(),user.getVoice(),user.getDiary()};
		return DBUtil.executeUpdate(sql,params);
	}

插入的 user 表中一共有10个字段,其中第一个便是自增长字段 id,上述语句中有9个占位符,插入的数据也是9个数据,对应9个占位符。

则出现如下错误:

Column count doesn't match value count at row 1

2.正确处理:

public boolean addUser(User user) {
		// TODO Auto-generated method stub 
		//在自增长字段 id 处添加 NULL/DEFAULT 均可行
		String sql = "insert into user values(NULL,?,?,?,?,?,?,?,?,?)";
		Object[] params = {user.getName(),user.getPassword(),user.getSex(),user.getBirthday(),user.getEmail(),user.getHobby(),
				user.getIntro(),user.getVoice(),user.getDiary()};
		return DBUtil.executeUpdate(sql,params);
	}

如上,在插入语句 sql 中, id (自增长字段)对应位置处 添加 了 NULL(添加 DEFAULT 同样可行),而插入的数据依旧是9个占位符对应的9个字段数据(每当插入一个记录,id 就会对应自增长)。

这样,就可以在包含自增长字段的表中插入数据啦!
在这里插入图片描述

发布了25 篇原创文章 · 获赞 22 · 访问量 2854

猜你喜欢

转载自blog.csdn.net/qq_42964349/article/details/105294379