gpt4 book ai didi

java - 在 oracle/JDBC 中排序主键

转载 作者:行者123 更新时间:2023-11-29 07:56:47 25 4
gpt4 key购买 nike

所以我有代码:

public void addUser( 
String username, String password,
String f_name, String l_name, String email)
{
try
{
//conn.setAutoCommit(false);
pstmnt = conn.prepareStatement("INSERT INTO users VALUES (?,?,?,?)");
pstmnt.setString(1, "user_id_increment.nextval");
pstmnt.setString(2, username);
pstmnt.setString(3, password);
pstmnt.setInt(4, 0);

pstmnt.execute();

在 Oracleb 中我有序列:

--Auto incrementing the user_id
CREATE SEQUENCE user_id_increment
MINVALUE 1
START WITH 1
INCREMENT BY 1
CACHE 20;

但是,我在 eclipse 中遇到异常:

Error: ORA-01722: invalid number

我认为调用序列 name.nextval 会给我序列中的下一个值,setString 在我插入任何其他整数时起作用。

有什么想法吗?

最佳答案

尝试

pstmnt = conn.prepareStatement("INSERT INTO users VALUES (user_id_increment.nextval,?,?,?)");
pstmnt.setString(1, username);
pstmnt.setString(2, password);
pstmnt.setInt(3, 0);

您必须在 SQL 语句中包含您的序列,而不是将其作为参数传递。

setString 对其他整数起作用的原因大概是因为 jdbc 驱动程序可以将它们强制转换为整数(并且它不能强制转换为“user_id_increment.nextval”)

关于java - 在 oracle/JDBC 中排序主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17192532/

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