Ver Mensaje Individual
  #7 (permalink)  
Antiguo 09/12/2009, 15:23
jorgegetafe
 
Fecha de Ingreso: febrero-2008
Ubicación: Madrid
Mensajes: 474
Antigüedad: 16 años, 3 meses
Puntos: 1
Exclamación Respuesta: Problema velocidad sqlite

Por lo que sea no puedo realizar sentencias masivas a la hora de insertar o de borrar. Tendré que intentar arreglarlo de otra manera.

¿Es posible que me de error al establecer demasiadas conexiones con la base de datos porque me las deje abiertas?
He revisado el código y creo que todo esta bien, si le podéis echar un vistazo por favor...

Así es como me conecto:

Código:
private void ConectarBD() {
        try {
            Class.forName(ControladorJDBC);
            conexion = DriverManager.getConnection(baseDatos);
            instruccion = conexion.createStatement();

        } catch (SQLException excepcionSql) {
            JOptionPane.showMessageDialog(null, excepcionSql.getMessage(),
                    "Error en la base de datos", JOptionPane.ERROR_MESSAGE);
            System.exit(1);
        } catch (ClassNotFoundException claseNoEncontrada) {
            JOptionPane.showMessageDialog(null, claseNoEncontrada.getMessage(),
                    "No se encontro el controlador", JOptionPane.ERROR_MESSAGE);
            System.exit(1);
        } finally {
            try {
                instruccion.close();
                conexion.close();
            } catch (SQLException excepcionSQL) {
                JOptionPane.showMessageDialog(null, excepcionSQL.getMessage(),
                        "Error en la base de datos", JOptionPane.ERROR_MESSAGE);
                System.exit(1);
            }
        }
    }
Y así es como hago por ejemplo una insercción:

Código:
public boolean altaContacto(Contacto valor) {
        if (existeContacto(valor)) {
            return false;
        } else {
            String sql;
            Statement comando;
            sql = "insert into contactos (numeroContacto, nombre, mote, apellido1, ...) ";

            sql = sql + " values ('" + Integer.toString(nuevoNumeroContacto()) + "',";
            sql = sql + "'" + valor.getNombre() + "', ";
            sql = sql + "'" + valor.getMote() + "', ";
            sql = sql + "'" + valor.getApellido1() + "', ";
            ...
            sql = sql + "'" + valor.getEspecialidadEstudios() + "'); ";
            try {
                Class.forName(ControladorJDBC);
                conexion = DriverManager.getConnection(baseDatos);
                comando = (Statement) conexion.createStatement();
                comando.execute(sql);
            } catch (Exception e) {
                JOptionPane.showMessageDialog(null, e.getMessage());

                return false;
            }
            return true;
        }
    }
Cuando hago inserciones masivas simplemente lo hago con un for.
Muchas gracias.