3

I'm currently upgrading a project from Java 7 to Java 8, thus I switched from using the JDBC-ODBC Bridge to using UCanAccess. The database I want to connect to is registered as a system DSN so I connected to it like this:

Database.forURL("jdbc:odbc:MyDB" + ";DB_CLOSE_DELAY=-1;charSet=Cp1250", driver = "sun.jdbc.odbc.JdbcOdbcDriver")

Now I changed that to

Database.forURL("jdbc:ucanaccess:MyDB" + ";DB_CLOSE_DELAY=-1;charSet=Cp1250", driver = "net.ucanaccess.jdbc.UcanaccessDriver")

but that gives me the error:

Driver net.ucanaccess.jdbc.UcanaccessDriver does not know how to handle URL jdbc:ucanaccess:MyDB;DB_CLOSE_DELAY=-1;charSet=Cp1250

Is there a way to access a DSN via UCanAccess?

Gord Thompson
  • 98,607
  • 26
  • 164
  • 342
LPrc
  • 1,217
  • 12
  • 29

1 Answers1

2

Is there a way to access a DSN via UCanAccess?

Not directly. UCanAccess is a JDBC driver that does not use ODBC, so it has no knowledge of ODBC DSNs.

Your UCanAccess connection string needs to include the path to the Access database file, e.g.,

jdbc:ucanaccess://C:/path/to/mydata.accdb

If necessary, you could retrieve that file path from the configuration information for an ODBC DSN. On Windows, the information for a System DSN named MyDB would be in the Windows registry under

HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\MyDb

or perhaps

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC\ODBC.INI\MyDb
Gord Thompson
  • 98,607
  • 26
  • 164
  • 342