0
我想使用PreparedStatement的,我使用的Oracle數據庫中創建自動遞增的ID,這是我的代碼創建的PreparedStatement自動增量ID
public Client newClient(Client client){
try {
con = DBConnection.getConnection(driver, url, name, pass);
pstmt = con.prepareStatement("INSERT INTO CLIENT (FIRSTNAME, LASTNAME, CAREER, CSALARY) VALUES (?, ?, ?, ?)", Statement.RETURN_GENERATED_KEYS);
pstmt.setString(1, client.getFirstName());
pstmt.setString(2, client.getLastName());
pstmt.setString(3, client.getCareer());
pstmt.setInt(4, client.getcSalary());
pstmt.executeUpdate();
rs = pstmt.getGeneratedKeys();
rs.next();
int id = rs.getInt(1);
client.setcId(id);
}catch(Exception ex){
ex.printStackTrace();
return null;
}finally{
try{ rs.close(); }catch (Exception e){}
try{ pstmt.close();}catch (Exception e){}
try{ con.close();}catch (Exception e){}
}//finally
return client;
}`
,但我有這個錯誤
java.sql.SQLException: ORA-01400: cannot insert NULL into ("AHMAD"."CLIENT"."CID")
PLZ幫我
AFAIK,Oracle沒有任何稱爲auto_increment的東西。如果您使用的是序列,則必須明確地將sequence.nextval設置爲該鍵,否則使用觸發器更新該列。 –
您需要創建一個觸發器來處理自動ID生成。 –
非常感謝你的答覆,但你可以給我舉例cuz我嘗試使用seq.nextval,但我有相同的錯誤 – Ahmad