很多时候,我们设计的数据中会有自增长字段,比如序号。
然而,自增长字段在插入数据时该怎么处理呢??
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 就会对应自增长)。
这样,就可以在包含自增长字段的表中插入数据啦!