Conexión de java Access usando ucanaccess tarda
Buenas tardes, días, o noche, a todos los del foro... gusto en saludarlos..
Tengo unos problemas de java con access usando ucanacces como controlador para la conexión... (se podría decir).
resulta que estoy migrando un pequeño sistema con base de datos access creado en 97, este sistema esta echo supongo que en VB 6.0, usando base de datos access, el motivo por la cual estoy migrando este sistema. es que ya no se ejecuta bien en un equipo con windows vista, 7, y menos de los actuales como 8, 10,. También porque ya se venció la licencia que Hera por un año, y para el cliente es un gorro estarlo usando solo por 30 días, restaurar el equipo con una imagen echa con el Norton Ghost, volver a instalar, pasar los archivos necesarios la base de datos con la que trabaja... entonces pues estoy migrando el sistema.
Como les decía la base de datos esta en access 97, el sistema es de un control de pacientes. algo sencillo, carga una foto, la cual en la tabla tiene un campo foto, de tipo texto, no como mysql, que tiene campos tipo blob o longblob; este campo foto tipo texto pues solo guarda la ruta en donde se encuentra la imagen o al momento de guardar crea una carpeta de Imágenes en donde se van guardado los demás fotos de los pacientes.., en campo aparece C:\Archivos de Programa\sistema\imagenes\foto.jpg
el sistema anterior tiene la opción de buscar la base de datos access, (El cliente siempre lo tiene en una memoria usb... que por si le roban su Laptop, pues la información lo tiene en la usb).
Como les decía que estoy migrando entonces el sistema. la base de datos la abro en un access 2010, la cual tiene que hacer una conversión del archivo etc. ya la convertí, y ahora prosigo a agregarle un campo tipo Objeto OLE, para guardar almacenar la foto.
La tabla contiene 11 mil registros de las cuales como unas 2 mil tienen fotos, y el resto no.. entonces lo que yo hice es que, las que no tenia foto, le puse una imagen con una cara gris, que es sin foto, cargue las imágenes que por cierto tardo mucho para cargarlo..... antes la base de datos pues pesaba 33 MB, ya cargando las imágenes ahora pesa 107 MB, (Estoy conciente de que con imágenes la base de datos tiene a crecer rápidamente).
Bueno estaba muy contento de finalmente haber cargado las imágenes, pero cual fue mi sorpresa... que ahora al ejecutar el programa y hacer la conexión con la bd. tardo pasadito de 8 minutos en mostrarme el loguin. de la cual anterior mente sin las fotos cargadas pues tarda al rededor de 8 o 10 segundos...
Quisiera que me sugirieran algo para agilizar la conexión para que no tarde tando.. imagínate con un bd que pesa 107 MB tarda 8 minutos ya me imagino que un par de años cuando pese 300 MB, me va tardar media hora en conectarse.. no pues ta cañón no...
Ya hice mis revisiones anteriormente tenia esta linea en la conexión de base de datos..
Con esta linea pues les dacia que tardo un poco mas de 8 minutos. cambiando la linea de código de la siguiente forma..
Con este cambio ya tardo menos.. 45 segundos en conectarse... es un cambio muy notable..
........................................................................................................................................................................................................
Pero sigo pensando que se tarda mucho en conectar.. como hacer para que se agilice la conexión.
........................................................................................................................................................................................................
Volviendo un poco al cambio de linea de código de la conexión con access..
resulta que al cargar las imagenes "memory=false";
nunca me marco un error eso si tardo como 3 horas en cargar las imagenes.. supongo que me pase al mandarle todo de un jalon que haga la actualizacion..
tengo esta linea de código donde obtengo la ruta de la imagen y prosigo a convertirlo en un arreglo de bytes[] y despues almacenarlo en un ArrayList
- Inicie sesión o regístrese para enviar comentarios
tarda con conectarse
Bueno ya que nadie opino aqui esta mi opinion para futuras.. consultas..
Resulta que mejor migre todo lo de access a mysql. todo bien, al cargar las imagenes en la base de datos..
como les decia cuenta con mas de 11 mil registros y hay que cargarle las imagenes.. pero al momento de actualizar o cargar las imagenes me tira el error similar a esto
ce
pero ahora de mysql, el error es relacionado con
java.lang.OutOfMemoryError: Java heap spa
bueno y lo que termine aciendo es que por cada foto que cargaba en la base de datos tenia que serrar la instrucion de esta manera.
run_mysql.setString(1, datos.get(0));
run_mysql.setBytes(1, (byte[])datos.get(0));
s = run_mysql.executeUpdate();
run_mysql.close(); // y aqui cerraba
y solamente cerrando ya ebita el error de java.lang.OutOfMemoryError: Java heap spa,
y asi anteriormente le decia que para subir las 11 mil fotos tardo 3 horas en cargar. con este cambio tardo mucho menos 15 minutos.. y cambio muy notable.----
bueno espero que alguien mas le sirva
space
El mensaje completo es Java heap space. Pero bueno a fin de cuentas se estaba terminando la memoria porque no estabas liberando recursos y efectivamente la solución era cerrar la conexión de vez en cuando (no tiene que ser una conexión por imagen, puede ser cada 10 por ejemplo).