Oracle 的主键 是 sequence 生成的吗?若是,以下是解决方法: 1,用Oracle 的returning 语句。 PreparedStatement sta = conn.prepareStatement("INSERT INTO LOGGING VALUES (TESTSEQ.NEXTVAL,SYSDATE)returning id into ? ");
sta.execute(); ResultSet rset = sta.getResultSet(); while(rset.next()) { int id = rset.getInt(1); } 如果是既有传入值,又有返回值的话,应该: PreparedStatement sta = conn.prepareStatement("BEGIN INSERT INTO LOGGING VALUES (TESTSEQ.NEXTVAL,? )returning id into ?; END; ");
sta = conn.prepareCall(sqlText); sta .setString(1, srqID); sta .registerOutParameter(2, Types.NUMERIC); sta .execute();
return sta .getLong(2); 或者用oracle的 OraclePreparedStatement
String sql = "insert into test values(1,?) returning id into ?"; OraclePreparedStatement pstt = (OraclePreparedStatement) conn.prepareStatement(sql);