java在插入之前获取SQL的下一个序列号

Z.V*_*Z.V 9 java sql oracle sequence variable-assignment

我有TestingID变量,在我的Java代码SQL字符串如下.稍后将使用sql字符串prepareStatement.

 int TestingID; 

 String sqlInsert = "INSERT INTO TESTING VALUES(TESTING_SEQ.NEXTVAL, ?, ?)";  
 ...  

 MethodA(TestingID);     //passing TestingID to MethodA
Run Code Online (Sandbox Code Playgroud)

我需要将新插入的记录的下一个序列值放入其中,TestingID以便我可以在另一个方法中使用它,如上所示.

Cri*_*ses 28

通过使用该方法,您应首先查询新的标识值(我看到您正在使用序列).这可以通过发出一个选择来完成.

// This example is for Oracle

String sqlIdentifier = "select TESTING_SEQ.NEXTVAL from dual";
PreparedStatement pst = conn.prepareStatement(sqlIdentifier);
synchronized( this ) {
   ResultSet rs = pst.executeQuery();
   if(rs.next())
     long myId = rs.getLong(1);
Run Code Online (Sandbox Code Playgroud)

之后,将其作为参数传递给preparedStatement.

...
String sqlInsert = "INSERT INTO TESTING VALUES(?, ?, ?)";
PreparedStatement pst = conn.prepareStaetment(sqlInsert);
pst.setLong(1, myId);
...
Run Code Online (Sandbox Code Playgroud)

从那时起,您将始终拥有您的序列号.

这些不是功能性的例子(没有捕获或最终等),但会让你知道如何做到这一点;)