Holas a todos!!
Estoy desarrollando una aplicación de escritorio en Java y MYSQL, y me he encontrado con un problema al que no le encuentro solución alguna.
La base de datos principal del proyecto es MYSQL y en ella existen varias tablas que tienen que actualizarse periódicamente a partir de un fichero .MDB de Access que el usuario localiza mediante un JFileChooser, para posteriormente lanzar el proceso de carga de la información mediante un simple clic en un jButton.
Las tablas tienen la misma estructura de campos en ambas BDD y se denominan igual.
El proceso debe seguir un orden específico para el tratamiento de las tablas de la BDD Access y por eso cargo manualmente al principio del proceso un array con el nombre de cada una de ellas y el orden que deben llevar lo establecerá el propio indice. Por otro lado y usando DatabaseMetaData, cargo otro array con el nombre de las tablas que me llegan desde el fichero de Access (exceptuando las ocultas). Por último recorro el primer array para localizar a cada elemento en el segundo y proceder con las actualizaciones en la base de datos de MYSQL que sean necesarias, si existe o no el registro con el que se esté trabajando.
Para las conexiones con la base de datos MYSQL uso un pool de conexiones basado en BasicDataSource y para gestionar la de Access uso el puente JDBC-ODBC usando el DriverManager.
Pues bien, el caso es que el proceso arranca correctamente. Las conexiones se abren perfectamente e incluso se tratan varias tablas con sus operaciones SQL de INSERT, pero sin motivo aparente se produce un SQLException con código 0 que dice que la conexión de MYSQL es nula. Unas veces ocurre en un preparedStatement y otras en un executeUpdate.
He probado de todo. Si quito código y por ejemplo dejo el necesario para gestionar una tabla si consigo que termine bien, pero desde que añado algunas más, falla. Incluso llegué a pesar que estuviese asociado a la ejecución masiva de preparedStatement con los INSERT pero no es el caso ya que tengo otro proceso donde cargo otras tablas desde un fichero de excel y no falla (claro aquí no hay dos tipos de conexión).
En definitiva que estoy dando palos de ciego y no sé que hacer. Les dejo un fichero RAR donde está el código ya que es un poco largo. Hay una clase java MYSQL.java que es donde gestiono el pool de conexiones y luego otro fichero donde les dejo el método con el proceso de carga.
Si detectan algo raro, se les ocurre que puede estar pasando, o alguna idea para depurar, les ruego que me lo indiquen ya que estoy desesperado.
Gracias y saludos.
ENLACE:
http://ge.tt/api/1/files/4KT7eMc1/0/blob?download