在新增數據(執行插入語句)時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 就會對應自增長)。

這樣,就可以在包含自增長字段的表中插入數據啦!
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章