gpt4 book ai didi

java - Java 中的 Oracle 主键生成器

转载 作者:行者123 更新时间:2023-12-02 09:14:44 26 4
gpt4 key购买 nike

我的应用程序允许用户创建帐户(存储在数据库中)并下订单。
当客户端注册自己时,我想生成一个名为 CLIENT_CODE 的主键来识别他,从 x 值开始并以 y 值递增。 (我使用的是oracle 11g atm)
到目前为止我已经尝试过:

private void jButton6ActionPerformed(java.awt.event.ActionEvent evt) {                                         
String fname = jTextField9.getText();
String lname = jTextField10.getText();
String city = jTextField11.getText();
String street = jTextField13.getText();
String number = jTextField14.getText();
String userClient = jTextField15.getText();
String pass1 = String.valueOf(jPasswordField5.getPassword());
String pass2 = String.valueOf(jPasswordField6.getPassword());

if(verifyFields()){
if(!checkUsername(userClient)){
OraclePreparedStatement ps;
OracleResultSet rs;
String registerClient = "insert into CLIENT (FNAME_CL, LNAME, CITY, STREET, NUMBER, MONEY, CLIENT_CODE, USER_CLIENT, PASS) values (?, ?, ?, ?, ?, ?, ?, ?, ?)";

try {
ps = (OraclePreparedStatement) JavaConnectDb.ConnectDb().prepareStatement(registerClient);
ps.setString(1, fname);
ps.setString(2, lname);
ps.setString(3, city);
ps.setString(4, street);
ps.setString(5, number);
ps.setDouble(6, 0.0);
ps.setInt(7, ???); <--- here should be the generated primary key
ps.setString(8, userClient);
ps.setString(9, pass1);

if(ps.executeUpdate() != 0){
JOptionPane.showMessageDialog(null, "Account created!");
} else{
JOptionPane.showMessageDialog(null, "Error: Check your info");
}
} catch (SQLException ex) {
Logger.getLogger(App.class.getName()).log(Level.SEVERE, null, ex);
}


}
}
}

最佳答案

不要在 Java 中这样做;使用 sequence 处理数据库中的主键值创建:

CREATE SEQUENCE CLIENT__CLIENT_CODE__SEQ
START WITH 1
INCREMENT BY 1

然后只需在 INSERT 语句中使用您的序列并使用 RETURNING clause获取生成的值作为准备好的语句的 OUT 参数。

insert into CLIENT (
FNAME_CL,
LNAME,
CITY,
STREET,
NUMBER,
MONEY,
CLIENT_CODE,
USER_CLIENT,
PASS
) values (
?,
?,
?,
?,
?,
?,
CLIENT__CLIENT_CODE__SEQ.NEXTVAL,
?,
?
) RETURNING CLIENT_CODE INTO ?

如果您使用的是 Oracle 12c,那么您可以使用 GENERATED AS IDENTITY在表的 CREATE DDL 语句中生成值,而无需创建单独的序列。

关于java - Java 中的 Oracle 主键生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59088131/

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