很多時候,我們設計的數據中會有自增長字段,比如序號。
然而,自增長字段在插入數據時該怎麼處理呢??
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 就會對應自增長)。
這樣,就可以在包含自增長字段的表中插入數據啦!