[RESOLVIDO]Ajuda com método que insere no banco

Boa tarde pessoal, bom na verdade é uma duvida e não um problema…
tenho meu método que insere endereços no banco, ele funciona só que tenho muitos registros que vem de um arquivo xml que devem ser carregados em sequencia e mandado para ele inseri. ai que ta, fica muito lento gostaria de saber se alguém sabe uma maneira que possa melhor meu desempenho.

[code] public void insreEnderecos(Endereco end) {
Connection con = criaConexao();
String sql = “INSERT INTO tmp_endereco VALUES ( ?,?,?,?,?,?,?,?,? )”;
PreparedStatement ps = null;
try {
ps = con.prepareStatement(sql);
ps.setString(1, end.getLogradouro());
ps.setString(2, end.getNumero());
ps.setString(3, end.getBairro());
ps.setString(4, end.getCodigoMunicipio());
ps.setString(5, end.getCep());
ps.setString(6, end.getTipoEndereco());
ps.setString(7, end.getResideExterior());
ps.setString(8, end.getComplemento());
ps.setString(9, end.getCodigoMunicipioResidencia());
ps.execute();
} catch (Exception e) {
e.printStackTrace();
} finally {
fechaStatement(ps);
fechaConexao(con);
}

}[/code]

Você está abrindo e fechando a conexão para cada linha que você insere no banco. Isso é que está gastando seu tempo.

Uma forma boba de você resolver esse problema é passar o Connection como um novo parâmetro para esse método, e abrir a conexão em outro lugar (não se esquecer de fechá-la depois :slight_smile: )

Valeu vou testar :smiley:

Melhorou, ficou mais rapido mesmo muito obrigado :smiley:

eu faço assim:

Botão que eu pequei os dados

cor cores = new cor(); TabCor tacor = new TabCor(); private void BtnPegaActionPerformed(java.awt.event.ActionEvent evt) { tacor.setDescricao(TfPega.getText()); try { cores.Inserir(tacor); } catch (SQLException ex) { Logger.getLogger(JanelinhaXD.class.getName()).log(Level.SEVERE, null, ex); } }

classe que eu uso para mandar a sql:

import java.sql.SQLException; import javax.swing.JOptionPane; public class cor extends Conexao{ public void Inserir(TabCor t) throws SQLException { super.conectar(); String sqlinsert = "insert into cor (descricao) values ('" + t.getDescricao() + "')"; if (!super.ExecutarCrud(sqlinsert)) { JOptionPane.showMessageDialog(null, "erro ao cadastrar cliente"); } else { JOptionPane.showMessageDialog(null, "cadastrado com exito"); } super.fechar(); } }

classe que manda pro bd

[code]import java.sql.*;
import java.util.logging.Level;
import java.util.logging.Logger;

public class Conexao {

public Connection con = null; // conexão
public Statement stm = null; // canal para execução de queryies
public ResultSet rs = null;

// conexão com servidor e base de dados
public boolean conectar() throws SQLException {
    boolean erro = true;
    // registrando classe e driver
    try {
        Class.forName("org.postgresql.Driver");//driver do bd no meu caso postgres
    } catch (ClassNotFoundException ex) {
        Logger.getLogger(Conexao.class.getName()).log(Level.SEVERE, null, ex);
        erro = false;
        ex.printStackTrace();
    }
    // realizando conexão
    con = DriverManager.getConnection("jdbc:postgresql://localhost:5432/nome do bd", "seu user do bd", "senha do bd");
    // criando canal para execução de sql
    stm = con.createStatement();
    // retorna resultado da conexão
    return erro;
}

public void fechar() {
    try {
        con.close();
        System.out.println("Conexão finalizada!");
    } catch (SQLException onConClose) {
        System.out.println("Houve erro ao fechar a conexão!");
        onConClose.printStackTrace();

    }
}

public boolean ExecutarCrud(String sql) throws SQLException {
int erro;
erro = stm.executeUpdate(sql); //executa sql
if (erro == 0) { //aponta para primeiro registro da consulta

        return false; // não há registros

    } else {
        return true;
    }

}

}[/code]

set e get…

[code]public class TabCor {

private int CodCor;
private String Descricao;

public int getCodCor() {
    return CodCor;
}

public void setCodCor(int CodCor) {
    this.CodCor = CodCor;
}

public String getDescricao() {
    return Descricao;
}

public void setDescricao(String Descricao) {
    this.Descricao = Descricao;
}

}[/code]