(resolvido) Duvida jdbc

1 resposta
jonasjgs2

bom dia a todos...

eu tenho um metodo que pega uma lista com 74 elementos e so insere o primeiro
porque isto esta acontecendo?

public void InsereLista(List<CadFun> lista) throws SQLException {
        PreparedStatement stmt = null;

        for (CadFun cadfun : lista) {
            StringBuilder sb = new StringBuilder();
            sb.append("insert into CadFun");
            sb.append("(FunNome,FunCodigo,FunTipo,");
            sb.append("FunSenha)");
            sb.append(" values (?,?,?,?)");
            stmt = this.con.prepareStatement(sb.toString());
            stmt.setString(1, cadfun.getFunNome());
            stmt.setLong(2, cadfun.getFunCodigo());
            stmt.setString(3, cadfun.getFunTipo());
            stmt.setLong(4, cadfun.getFunSenha());
            stmt.addBatch();
            
        }
        stmt.executeBatch();
        stmt.close();

    }

o problema e que o metodo devia ficar assim:

public void InsereLista(List<CadFun> lista) throws SQLException {
        PreparedStatement stmt = null;
            StringBuilder sb = new StringBuilder();
            sb.append("insert into CadFun");
            sb.append("(FunNome,FunCodigo,FunTipo,");
            sb.append("FunSenha)");
            sb.append(" values (?,?,?,?)");
            stmt = this.con.prepareStatement(sb.toString());

        for (CadFun cadfun : lista) {
            stmt.setString(1, cadfun.getFunNome());
            stmt.setLong(2, cadfun.getFunCodigo());
            stmt.setString(3, cadfun.getFunTipo());
            stmt.setLong(4, cadfun.getFunSenha());
            stmt.addBatch();
            
        }
        stmt.executeBatch();
        stmt.close();

    }

1 Resposta

E

http://docs.oracle.com/javase/1.3/docs/guide/jdbc/spec2/jdbc2.1.frame6.html

Veja, no exemplo, que ele chama prepareStatement apenas uma vez, não 74 vezes como você fez.

Além disso, batches não podem ser tão compridas assim. Veja a documentação do seu banco para ver o tamanho máximo de uma batch.

Criado 26 de março de 2013
Ultima resposta 26 de mar. de 2013
Respostas 1
Participantes 2