Olá pessoal!
Estou fazendo um insert utilizando jdbc, entretanto, não consigo pegar o id que foi gerado no banco,o banco que estou usando é sql server.
Quando tento acessar o ResultSet da o seguinte erro: [quote]java.sql.SQLException: No current row in the ResultSet.[/quote]
Gostaria de saber como faço para pegar o id que acabei de gravar, segue abaixo o código que estou utilizando.
public final int executarSQL2(String sql) throws SQLException {
int qtdLinhasAtualizadas = 0;
erroCodigo = 0;
erroMensagem = "";
setErroTrace("");
PreparedStatement pstmt;
pstmt = conexao.prepareStatement(sql,PreparedStatement.RETURN_GENERATED_KEYS);
try {
qtdLinhasAtualizadas = pstmt.executeUpdate();
if (qtdLinhasAtualizadas == 0) {
erroCodigo = ERRO_CRITERIO_INVALIDO;
erroMensagem = "Crit?rio para insert/update/delete inv?lido!";
}else{
ResultSet rs = pstmt.getGeneratedKeys();
rs.getInt(1);
int columns = rs.getMetaData().getColumnCount();
for (int i=1;i<=columns;i++) {
System.out.println(rs.getMetaData().getColumnName(i)+":"+rs.getString(i));
}
System.out.println("Dados foram atualizados com sucesso com sucesso!");
}
} catch (SQLException e) {
e.printStackTrace();
erroCodigo = e.getErrorCode();
erroMensagem = "Erro na execução do SQL : " + e.getMessage().replace('\n', '\0');
return 0;
} finally {
if (pstmt != null) {
pstmt.close();
}
}
return qtdLinhasAtualizadas;
}
Estou utilizando o drive do jtds:
public boolean conectar() {
try {
Class.forName("net.sourceforge.jtds.jdbc.Driver");
conexao = DriverManager.getConnection("jdbc:jtds:sqlserver://localhost;DatabaseName=Banco_teste;", "sa", "sa");
System.out.println("**** CONECTOU !!!! " + conexao.toString());
} catch (ClassNotFoundException e) {
e.printStackTrace();
return false;
} catch (SQLException ex) {
ex.printStackTrace();
return false;
} catch (Exception e) {
e.printStackTrace();
return false;
}
return true;
}
Se alguém puder me ajudar ficarei muito agradecido.
Deus abençoe!