繁体   English   中英

在oracle / JDBC中排序主键

[英]Sequencing primary key in oracle / JDBC

所以我有代码:

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

我以为调用序列名称.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”)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM