olá, possuo uma aplicação que utiliza MYSQL e conexão atraves da JDBC do MySQL.
Bom quando vou fazer um insert numa tabela do bd (é a importação de 23.000 registros) quando chega perto do registro 4.000 ele dá a seguinte mensagem de erro. O insert dos dados é feito um por um, não sei se isso pode ser o problema?
com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception:
** BEGIN NESTED EXCEPTION **
java.net.SocketException
MESSAGE: java.net.BindException: Address already in use: connect
Não será porque você está criando conexões demais?
D
DianaPJ
vc está usando alguma pool de conexoes?
vc disse q. faz a inserção dos registros um a um…por acaso vc estaria abrindo uma conexão para cada inserção?
t+
K
kikofrPJ
Cara, acho que não, dá uma olhada na minha classe que faz a conexão com o BD para insert's
packagebd;importjava.io.IOException;importjava.sql.Connection;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Statement;/** * * @author KIKO */publicclassinsert{/** Creates a new instance of insert */publicinsert(){}publicstaticvoidinsere(Stringsql)throwsSQLException{try{banco.init();Connectionconn=banco.getConnection();Statementstat=conn.createStatement();stat.execute(sql);conn.close();stat.close();}catch(IOExceptionex){ex.printStackTrace();}catch(ClassNotFoundExceptionex){ex.printStackTrace();}}}
Ele abre a conexão, faz o insert e fecha a conexão.
Tem alguma sugestão para melhorar o codigo?
J
jaireltonPJ
Sugiro isso:
Como são varias inserções idênticas, eu sugiro o uso de PreparedStatement, pois ele compila a expressão, tornando a execução mais rápida e menos custosa. E use uma conexão só também.
Não sei que tipo de objeto você está inserindo, mas suponhamos que sejam usuários, com nome, login e senha.