gpt4 book ai didi

Java JDBC 向数据库添加自动值

转载 作者:塔克拉玛干 更新时间:2023-11-01 23:09:12 24 4
gpt4 key购买 nike

我正在使用 Java JDBC 和 Apache Derby 数据库。
我有一个名为 `company`` 的表,其值为:
id, comp_name, password, email.

此方法应使用从用户收到的名称、密码和电子邮件创建新的 company 行,但 ID 应自动从数据库中提供,并在每次添加新公司时自行递增到数据库。

我只是想不出如何让它工作,我显然得到了一个错误

"column 'ID' cannot accept a NULL value."

因为更新发生在 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);
}

最佳答案

在创建该表期间,您必须编写以下 DDL

CREATE TABLE MAPS
(
comp_id INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1),
comp_name VARCHAR(24) NOT NULL,
password VARCHAR(26)
)

引用:https://db.apache.org/derby/docs/10.0/manuals/develop/develop132.html

关于Java JDBC 向数据库添加自动值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33757310/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com