使用 Java 的 DB2 序列值

Jay*_*ayp 5 java db2 jdbc

我需要从 DB2 序列中获取下一个值。这是我尝试过的一种方法

stmt = con.createStatement();
rs = stmt.executeQuery("db2 VALUES NEXTVAL FOR <sequence_name>"); 

rs.close();
stmt.close(); 
Run Code Online (Sandbox Code Playgroud)

我得到的错误如下:

com.ibm.db2.jcc.c.SqlException: [ibm][db2][jcc][10103][10941] Method executeQuery cannot be used for updates.
           at com.ibm.db2.jcc.c.qh.a(qh.java:2390)
           at com.ibm.db2.jcc.c.qh.a(qh.java:1751)
           at com.ibm.db2.jcc.c.qh.a(qh.java:478)
           at com.ibm.db2.jcc.c.qh.executeQuery(qh.java:462)
           at test.pack.SequenceConn.getNextSequenceValue(SequenceConn.java:59)
           at test.pack.SequenceConn.main(SequenceConn.java:22)
Run Code Online (Sandbox Code Playgroud)

如何从序列中检索下一个值?

Jay*_*ayp 5

自己设法解决了这个问题。

stmt = con.createStatement();
rs = stmt.executeQuery("VALUES NEXTVAL FOR <sequence_name>"); 

rs.close();
stmt.close();
Run Code Online (Sandbox Code Playgroud)

基本上db2查询字符串中的前面是导致问题的原因。删除它并能够获得序列值。