【发布时间】:2011-05-28 15:15:21
【问题描述】:
我尝试将序列.nextval作为主键插入到表中,Java中的sql是
sql = "INSERT INTO USER
(USER_PK, ACCOUNTNUMBER, FIRSTNAME, LASTNAME, EMAIL )
VALUES
(?,?,?,?,?)";
ps = conn.prepareStatement(sql);
ps.setString(1, "User.nextval");
ps.setString(2, accountNumber);
ps.setString(3, firstName);
ps.setString(4, lastName);
ps.setString(5, email);
但是,错误是ORA-01722: invalid number
其他字段都正确,我认为是顺序的问题,这样正确吗?
【问题讨论】:
-
这应该是 0 索引吗?编辑:没有
-
是你序列用户的名字吗?它需要是 SequenceName.NextVal 另外,只需对所有内容使用准备好的语句,但 sequencename.NextVal
-
我不做 Oracle,但在 PostgreSQL 中,它们(创建为
SERIAL PRIMARY KEY类型的序列)在每个INSERT上自动递增。您通常希望从INSERT语句中省略它,以便数据库自己处理它。因此,在您的情况下,您可能会从 SQL 中省略USER_PK列。 MySQL、DB2 和 SQLServer 也有类似的结构。 -
@BalusC:SQL Server 2011 将支持序列 - 现在只需要让 MySQL 来完成它:/。据我所知,Oracle 没有任何类似于 PostgreSQL 的
serial的东西。
标签: java sql oracle jdbc ora-01722