我在Java代码中具有TestingID变量和sql字符串,如下所示。 sql字符串稍后将用于prepareStatement

 int TestingID;

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

 MethodA(TestingID);     //passing TestingID to MethodA

我需要将新插入的记录的下一个序列值放入TestingID中,以便可以在上述另一种方法中使用它。

最佳答案

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

// 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);

之后,将其作为参数传递给prepareStatement。
...
String sqlInsert = "INSERT INTO TESTING VALUES(?, ?, ?)";
PreparedStatement pst = conn.prepareStaetment(sqlInsert);
pst.setLong(1, myId);
...

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

这些不是功能示例(没有捕获或最终的结果,等等),但是将使您了解如何执行此操作;)

关于Java在插入之前获取SQL记录的下一个序列号,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18002377/

10-10 10:45