Duvida iniciante, referente a banco

tenho que fazer a integraçao do ERP (oracle ) pro novo site (SQLServer) via java.

faço um select no oracle e dentro do laço que crio vou dando insert, soh que a cada insert crio uma
nova conexao e acabo derrubando a porta do servidor SQLserver qndo atinjo um numero x de insert, ja analisei e refiz meu codigo milhoes de vezes, se alguem conseguir ajudar agradeço
vou mandar um resumo do codigo:

[code]
//classe que faz o select e monta o laço

public void selecionaDadosUsu_TproSit() throws SQLException{
this.connectionOracle = conexaoOracle.getConnection();
sql = "SELECT codpro, bla bla ";

       PreparedStatement stmOracle = this.connectionOracle.prepareStatement(sql);
       try {
           ResultSet rs = stmOracle.executeQuery(sql);
           while(rs.next()){
              String codpro = rs.getString("codpro");
              testeInclusaoDao inclusao = new testeInclusaoDao();
              tbImportProducts tst = new tbImportProducts();
              tst.setIdProduct(codpro);

              //chamo a classe que insere no SQLserver
              inclusao.adicionaTeste(tst);
           }
       } catch (Exception e){
           System.out.print(e.getMessage());
       }
}

/// classe que faz a inserçao
public void adicionaTeste(tbImportProducts incluiProduto) throws SQLException{
//System.out.println(connectionMsSql.isClosed());
this.connectionMsSql = conexao.getConnection();
System.out.println(connectionMsSql);
sqlAux = "insert into bla bla bla ";
PreparedStatement stmMsSql = this.connectionMsSql.prepareStatement(sqlAux);
try {
stmMsSql.setString(1, incluiProduto.getIdProduct());
stmMsSql.execute();
connectionMsSql.isClosed();
fechaConexaoMsSql();
} catch (Exception e) {
System.out.print(e.getMessage());
}
}

//minha conexao
public static Connection getConnection() throws SQLException {
try {
// System.out.println("iniciando conexao ao banco!! ");
Class.forName(“com.microsoft.sqlserver.jdbc.SQLServerDriver”);
// System.out.println("Conectando ao banco Teste_junior ");
return DriverManager.getConnection(
“jdbc:sqlserver://localhost:1433;databaseName=TESTE_SITE;selectMethod=cursor;”,
“livrarias”,
“livrarias”);
} catch (ClassNotFoundException e) {
throw new SQLException(e.getMessage());
}
} [/code]

Já experimentou fechar a conexão após executar todos os inserts (fora do laço)? E antes de fechar o legal é dar um commit. Adicione uma estrutura finally, e dentro dela você pode/deve fechar a conexão, resultSet e statement. Abraço.

Ex:

[code]try{

}catch Exceção{

}finally{
//feche as estruturas (conexão, resultSet e statement)aqui
}
[/code]

The TCP/IP connection to the host has failed. java.net.BindException: Address already in use: connect

continua dando erro, acho que o problema sao as quantidades de conexoes que ele cria. parece que nao esta fechando elas…

abrxxx

Ah tá! Crie a conexão fora o método. Co loque a conexão como atributo da classe, e instancie no construtor. Daí é só usar a conexão no escopo de membro de classe. O problema é que você está criando conexões a cada inserção. Dica: crie uma classe de Conexão, nela terá apenas o que é referente à conxão em si, isso influi no conceito de alta coesão.

quando dou esse comando será que ele cria uma nova conexão?

PreparedStatement stmMsSql = this.connectionMsSql.prepareStatement(sqlAux);

consegui corrigir velhinho, eu estava estanciando o mesmo metodo, marcaçao total…

valeu aw brother…

abrxxx

Não. Quando este comando é executado você já tem uma conexão criada, senão uma exceção seria lançada. A conexão é criada em this.connectionMsSql = conexao.getConnection();

Cara estude sobre classes de conexão (Singletons) e crie uma classe sua para esse propósito. Você podera reaproveitá-la para qualquer SGBD, só vai depender do Driver e String de Conexão.