Java + Firebird

1 resposta
java
W

Boa tarde pessoal, estou fazendo um app para importar uns dados para um banco de dados firebird ( nunca havia trabalhado com o mesmo ), sempre trabalhei com mysql e estou acostumado com o lastInsertId(), para o firebird eu encontrei uma forma diferente de retornar o ultimo ID, entendi o codigo mas ele me causou estranheza, pois eu executo uma inserção com um executeQuery(), e aprendi ( posso ter aprendido errado ) que para inserções, alterações e deletes eu deveria usar o executeUpdate(), minha duvida é, alguém que ja trabalhou com firebird, inserir dados no firebird desta forma ( utilizando o executeQuery() ) pode me trazer algum problema futuro, ou para este banco de dados esta seria a forma correta?

connection.setAutoCommit(false);

    pstmt = connection.prepareStatement("INSERT INTO PESSOA (ID, NOME) VALUES(?, ?) RETURNING ID");
    pstmt.setInt(1, CODIGO_PESSOA);
    pstmt.setString(2, "Nome");

    // Pega a proxima chave
    rs = pstmt.executeQuery();
    rs.next();
    int chave = rs.getInt("ID");

    pstmt2 = connection.prepareStatement("INSERT INTO SOBRENOME (ID, IDPESSOA, SOBRENOME) VALUES(?, ?, ?);");
    pstmt2.setInt(1, CODIGO_SOBREN);
    pstmt2.setInt(2, chave);
    pstmt2.setString(3, "Sobrenome Qualquer");
    pstmt2.executeUpdate();
    
    connection.commit();

PS: Antes que me perguntem, o código esta funcionando, e sim, é apenas um teste, por isso eu tenho as variáveis CODIGO_PESSOA e CODIGO_SOBREN.

1 Resposta

javaflex

Está correto, independente de qual banco.

Criado 11 de outubro de 2019
Ultima resposta 12 de out. de 2019
Respostas 1
Participantes 2