Ver Mensaje Individual
  #1 (permalink)  
Antiguo 24/12/2015, 05:06
trulari
 
Fecha de Ingreso: octubre-2012
Mensajes: 38
Antigüedad: 12 años, 5 meses
Puntos: 0
"Too many connections"

Buenas, estoy haciendo una prueba puramente académica de migrado a una oracle desde un txt. Uso la típica clase para conectar a BD (bajada de la red, autoría de chenao, jdbc clásico académico) y mi código resumido es el siguiente.

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