Código PHP:
public class migrar {
public static void main(String[] args) {
FileReader fr = null;
BufferedReader br = null;
String linea = null;
try {
//SE INICIA LA LOGICA DEL MIGRADO
fr = new FileReader(rutaficheroblablavla);
br = new BufferedReader(fr);
//Mientras exista (siguiente) linea, y no pasemos del tamaño
while( (linea=br.readLine()) !=null ) {
//1// Preparamos la migración y hacemos cosas
conexion con = new conexion();
String sql = "INSERT INTO blablabla;";
PreparedStatement pst = con.getConnection().prepareStatement(sql);
//2// Preparamos el pst.setString
pst.executeUpdate();
//3// TRAS LANZAR SQL, CERRAMOS CONEXIÓN
pst.close();
con.desconectar();
//TODO Problema Estamos abriendo y cerrando
//conexiones por cada registro
}
}
} catch (Exception e) {
e.printStackTrace();
// Pasamos. Solo es una migración
} finally {
//4// AHORA CERRAMOS LA CONEXIÓN A FICHERO, no solo se cierra la BBDD.
try {
if (br != null) {
br.close();
}
if (fr != null) {
fr.close();
}
} catch (Exception e) {
e.printStackTrace();
// Pasamos. Solo es una migración
}
}
Es un código que funciona,y en ese aspecto no hay problema, pero como el fichero que uso de origen es muy grande, al final deja de meterme datos a mi BD, y me dice que
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientC onnectionException: Data source rejected establishment of connection, message from server: "Too many connections"
Es decir, que mucha petada conexiones y conexiones dentro del while.
Mi pregunta es; moviéndonos siempre en código académico para newbies tipo esto, sin entrar en pool de conexiones ¿etc, como podría hacerse para no lanzar esta sobrecarga de conexiones?
Muchas gracias