Erro scope_identity()

7 respostas
S

Boa noite pessoal,

seguinte estou tentando recuperar o último ID gerado por um insert da maneira abaixo, mas não consigo, me retorna o seguinte erro: [color=red]Can not issue data manipulation statements with executeQuery() [/color]

Alguém saberia me dizer o q estou fazendo de errado ?

abcs

public void gravar() throws Exception{
        
        open();

        StringBuilder sql = new StringBuilder();
        
        sql.append("Insert INTO Anuncio_Imovel( ");
        sql.append("Id_Conta, ");
        sql.append("Id_Tipo_Imovel, ");
        sql.append("Titulo_Anuncio, ");
...
        sql.append("Fl_Anuncio_Ativo, ");
        sql.append("Fl_Possui_Imobiliaria ");
        sql.append(")");
        sql.append("Values(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?); Select scope_identity();");

        stmt = con.prepareStatement(sql.toString());

        stmt.setInt(1, this.getIdConta());
        stmt.setInt(2, this.getIdTipoImovel());
        stmt.setString(3, this.getTituloAnuncio());
...
        stmt.setInt(21, this.isFlAnuncioAtivo());
        stmt.setInt(22, this.isFlPossuiImobiliaria());
        
        ResultSet rs = stmt.executeQuery();
        rs.next();

        this.setIdImovel(rs.getInt(1));

        rs.close();
        
        stmt.close();

        close();

    }

7 Respostas

ViniGodoy

Tópico movido para o fórum de persistência.

programadora

Oi! Vc já tentou utilizar executeUpdate ao invés de executeQuery?

S

da tipos incompatíveis quando utilizo o executeUpdate()…

alguém poderia postar um código que esteja funcionando para comparar ?

abcs

ViniGodoy

Por que não cria uma Stored Procedure?

S

não quero trabalhar com SPs, principalmente em MySql…
quero tudo na APP…

mais por decisao de arqutetura mesmo… nao tnho nada contra SPs…

S

po, pensei q essa ia ser facil rsrsrs
devo ta procurando errado no google, nao consigo achar nenhum exemplo…

S

consegui galera...
no MySql o nome da função é outro: LAST_INSERT_ID()

stmt.executeUpdate();

        rst = stmt.executeQuery("SELECT LAST_INSERT_ID()");
        rst.next();

        this.setIdImovel(rst.getInt(1));

        stmt.close();

        close();

abcs

Criado 19 de maio de 2011
Ultima resposta 20 de mai. de 2011
Respostas 7
Participantes 3