1

I want to write a program to retrieve data from MS Access database. I wrote program as bellow:

package db;

import java.sql.*;

public class MSaccess_archive {
    public static void main(String[] args) {

        try {

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

            String accessFileName = "E:/L4_project/sample/db/Database";

            String connURL="jdbc:odbc:DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ="+accessFileName+".accdb;";

            Connection con = DriverManager.getConnection(connURL, "","");

            Statement stmt = con.createStatement();

            stmt.execute("select * from student"); // execute query in table student

            ResultSet rs = stmt.getResultSet(); // get any Result that came from our query

            if (rs != null)
             while ( rs.next() ){

                System.out.println("Name: " + rs.getString("Name") + " ID: "+rs.getString("ID"));
                }

                stmt.close();
                con.close();
            }
            catch (Exception err) {
                System.out.println("ERROR: " + err);
            }
    }

}

But I got Exception as below:

ERROR: java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] Could not find file '(unknown)'.

When I used a .mdb file the above program works correctly but if I use a .accdb file it gives the above exception.

Any ideas why?

2
  • Not sure but try changing slashes in: String accessFileName = "E:/L4_project/sample/db/Database"; To double backslash: String accessFileName = "E:\\L4_project\\sample\\db\\Database"; Commented Jul 30, 2011 at 6:34
  • 1
    Note that the JDBC-ODBC Bridge has been removed from Java 8 and is not supported (ref: here and here). UCanAccess is a popular alternative (details here). Commented Mar 20, 2015 at 13:25

5 Answers 5

3

You may revisit steps, Control panel>Administrative Tools>Data Sources>Add>Microsoft Access Drivers(*mdb,*accdb)>ok>ok>ok. It might work.for ODBC connection.

Sign up to request clarification or add additional context in comments.

Comments

3

The JDBC-ODBC Bridge has been removed from Java 8 and is not supported (ref: here and here). UCanAccess is a popular alternative. For details, see

[Manipulating an Access database from Java without ODBC][1]

[1]: Manipulating an Access database from Java without ODBC)).

Comments

1

unless you specifically need to be able to run arbitrary sql queries, you can always give jackcess a try.

Comments

1

I think you need to specify jdbc:odbc:my_access_odbc_dsn as the URL, where my_access_odbc_dsn is your DSN name as configured in the ODBC. In my case, I was accessing an MS Access 2013 database called "PavoDB", so my URL was:

private static final String url="jdbc:odbc:PavoDB";

Comments

0

The driver probably hasn't been updated to read that format. .mdb is the original one for Access; .accdb must have been revised and the ODBC driver hasn't kept up.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.