Pregunta

Estoy lidiando con un problema que surgió en una aplicación en la que he estado trabajando y que se conecta a un archivo de Access a través de JDBC-ODBC.En otras plataformas Windows, no se ha encontrado este problema, pero en Windows 7 de 64 bits, al intentar conectarse con cadenas de conexión sin DSN se devuelve:

java.sql.SQLException: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified

Se han intentado múltiples variaciones en la cadena, pero todas arrojaron el mismo error.Así es como intenta conectarse actualmente:

  Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

  StringBuffer databaseConnectionString;

  if (SystemUtils.IS_OS_WINDOWS_7) {
       databaseConnectionString = new StringBuffer("jdbc:odbc:DRIVER=Microsoft Access Driver (*.mdb, *.accdb);DBQ=");
       databaseConnectionString.append(databaseFile);

  } else {
       databaseConnectionString = new StringBuffer("jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=");
       databaseConnectionString.append(databaseFile);
       databaseConnectionString.append(";DriverID=22;READONLY=false}");
  }

Examinar el controlador en el administrador de fuente de datos ODBC de 32 bits confirma que los controladores están presentes.Sin embargo, cuando se utiliza regedt32.exe para examinar los controladores ODBC (HKEY_LOCAL_MACHINE/SOFTWARE/ODBC/ODBCINST.INI/ODBC Drivers), ninguno de ellos aparece.

¿Alguien puede ayudar a arrojar algo de luz sobre esto?

¿Fue útil?

Solución

He encontrado el problema era que yo estaba corriendo el programa en Java de 64 bits. A pesar de que todavía no han tenido éxito el programa detecta si se está ejecutando en 32 bits o de 64 bits de Java, he resuelto la solución mediante la instalación de un entorno de ejecución de Java de 32 bits y el uso de un archivo .bat que lee como sigue:

@echo off

"C:\Program Files (x86)\Java\jre6\bin\java" -D32 -Xmx1024m -jar programName.jar

Gracias por la ayuda!

Otros consejos

Este fue un reto difícil dada la escasez de los mensajes de error significativos de Java o de MS controlador ODBC. Las respuestas anteriores sobre Down seleccionar a los conductores 32bit Java y MS Access (usando AccessDatabaseEngine.exe de MS) realizaron un trabajo, pero cuestan una penalización significativa (alrededor del 30%) en el procesamiento de otras acciones en comparación con el uso de 64 bits de Java. No estaba dispuesto a pagar este precio por lo que he instalado de 64 bits de Java (en conjunto con 32 bits, tanto en un directorio independiente c: \ Java \ 32 o 64). Este problema directorio de esta última era importante para mí ya que estaba usando Apache Geronimo y no comenzaría si Java se instala en Archivos de programa (x86) ... como el (x86) parecía matar a su análisis del archivo por lotes. Entonces no instalada de 32 bits y 64 bits de MS Access instalado MS Access (AccessDatabaseEngine_x64.exe). Por último, se trabajó con la velocidad de conexión y MDB superior.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top