Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>I also had this problem and tried many of the suggestions here and on various forums. Finally, I discovered a snippet from one place which led to success connecting and also explains why many of these posts do not work. See <a href="http://www.coderanch.com/t/295299/JDBC/databases/jdbc-odbc-DSN-connection-MS" rel="nofollow">http://www.coderanch.com/t/295299/JDBC/databases/jdbc-odbc-DSN-connection-MS</a> </p> <p>The issue is that there must be a semicolon after the colon at the end of odbc as in jdbc:odbc:;Driver= . This made sense after reading the Oracle documentation on the JdbcOdbc bridge which states that the syntax is jdbc:odbc:dsn; attributes....... Since we are not supplying a DSN, then we need to end with ; before adding attributes. </p> <p>I am showing below the tests I ran with different connection strings on a Windows 7 Ultimate 32bit machine:</p> <pre><code> driver= (Driver)Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance(); //jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ= does lookup to ODBC.ini to find matching driver try { connstr= "jdbc:odbc:;Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=" + fileURI; //64 bit ?? (*.mdb,*.accdb) conn= DriverManager.getConnection(connstr, "", ""); stmt= conn.createStatement(); } catch (Exception e){} try { connstr= "jdbc:odbc:;Driver={Microsoft Access Driver (*.mdb)};DBQ=" + fileURI; //64 bit ?? (*.mdb,*.accdb) conn1= DriverManager.getConnection(connstr, "", ""); stmt1= conn1.createStatement(); dbmeta1=conn1.getMetaData(); } catch (Exception e){} try { connstr= "jdbc:odbc:MS Access Database;DBQ=" + fileURI; //64 bit ?? (*.mdb,*.accdb) conn2= DriverManager.getConnection(connstr, "", ""); stmt2= conn2.createStatement(); dbmeta2=conn2.getMetaData(); } catch (Exception e){} try { connstr= "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=" + fileURI; //64 bit ?? (*.mdb,*.accdb) conn3= DriverManager.getConnection(connstr, "", ""); stmt3= conn3.createStatement(); dbmeta3=conn3.getMetaData(); } catch (Exception e){} </code></pre> <p>stmt1 and stmt3 are null since the connections are null. stmt and stmt2 work. stmt2 uses a connection string I found in the documentation for IBM Tivoli. It works because "MS Access Database" is a valid title in the ODBC registry as a User DSN on my computer. </p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload