我正在使用帶有Apache Derby數據庫的Java JDBC。
我有一個名爲`company``的表,其值爲:
id,comp_name,password,email。Java JDBC爲數據庫添加自動價值
此方法應該創建一個新行company
,其中包含用戶收到的名稱,密碼和電子郵件,但應自動從數據庫中提供ID,並在每次將新公司添加到數據庫時增加自身ID。
我只是無法弄清楚如何使這項工作,我明明得到一個錯誤
「列‘ID’不能接受一個NULL值。」
因爲更新發生在ID設置之前。
代碼:
public void createCompany(Company company) {
Connection con = null;
try {
con = ConnectionPool.getInstance().getConnection();
String sql = "INSERT INTO company (comp_name, password, email) VALUES (?,?,?)";
PreparedStatement pstmt = con.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
pstmt.setString(1, company.getCompName());
pstmt.setString(2, company.getPassword());
pstmt.setString(3, company.getEmail());
pstmt.executeUpdate();
ResultSet rs = pstmt.getGeneratedKeys();
rs.next();
company.setId(rs.getLong(1));
pstmt.getConnection().commit();
} catch (SQLException e) {
e.printStackTrace();
} finally {
ConnectionPool.getInstance().returnCon(con);
}
您在設置ID之前先進行插入操作。你爲什麼不在你的數據庫中使用自動增量? – Stultuske
是的,自動增量訣竅 –
去自動增量 – jcool