Após um cadastro(na segunda vez) minha sequence(usando ORACLE 10g) dispara!
Faço assim:
try{ //faz o insert do Client
new ClientDao().insert(c);
//pega o id do último registro
int id_c=new DBUtils().getSequence(Conexao.getConnection(),"SELECT CLIENTSEQ.CURRVAL FROM DUAL");
System.out.println("ID do CLIENT após o insert:"+id_c);
Meu getSequence:
public int getSequence(Connection conn,String query){
int sequence=0;
try{
PreparedStatement stmt = conn.prepareStatement(query);
ResultSet result = stmt.executeQuery();
if (result.next()) {
sequence=(int)result.getLong(1);
} else {
System.out.println("Sequence não encontrada!");
throw new SQLException("Sistema incapaz de pegar a Sequence da base!");
}
result.close();
stmt.close();
}catch(Exception e){
throw new RuntimeException(e);
}
return sequence;
}
Na primeira vez, vai OK:
[quote]
Entrou no insert:
ID do CLIENT após o insert:1[/quote]
No segundo insert dispara:
[quote]
Entrou no insert:
ID do CLIENT após o insert:21[/quote]
Meu insert na base:
[code]
try{
int sequence=0;
stmt = this.connection.prepareStatement("SELECT CLIENTSEQ.NEXTVAL FROM DUAL");
ResultSet result = stmt.executeQuery();
if (result.next()) {
sequence=(int)result.getLong(1);
} else {
System.out.println("primary-key não encontrada!");
throw new SQLException("PK not found!");
}
result.close();
stmt.clearParameters();
stmt = (PreparedStatement) this.connection.prepareStatement(INSERT);
System.out.println("Entrou no insert:");
stmt.setInt(1, sequence);
stmt.setString(2, obj.getName());
stmt.executeUpdate();
stmt.close();
}catch(Exception e){
throw new RuntimeException(e);
}[/code]
O que pode estar ocorrendo?