• 0

[Java] MS access driver for mac/linux?


Question

Hi guys just a quick question, I've recently purchased a MacBook and installed the netbeans and opened a existing project that had developed using MS Access database(this can't be changed due to coursework).

No matter what i've tried I am unable to connect to the .mdb , I was wondering if it is possible at all to connect to the the database on a mac or linux?

Thanks

Matt

Link to comment
https://www.neowin.net/forum/topic/887410-java-ms-access-driver-for-maclinux/
Share on other sites

7 answers to this question

Recommended Posts

  • 0

You should be able to use ODBC using the JDBC bridge driver:

static {
	try {
		Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
	} catch (ClassNotFoundException ex) {
		System.err.println("JDBC ODBC Bridget Driver not found.");
	}
}

public static Connection getConnection(string fileName) {
	string connection = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=" + fileName + ";DriverID=22;ReadOnly=false;";
	return DriverManager.getConnection(connection, "", "");
}

  • 0

I've tried this and a I get the following error

java.sql.SQLException: No suitable driver found for jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=/Users/Matt/Documents/CSSD/Application/database.mdb;DriverID=22;READONLY = FALSE}

  • 0

Do you have the jar with that Driver on the Classpath? It looks like you forgot to copy to jar over perhaps? Java is platform independent, so nothing (in general) special needs to be done when you switch to Linux or Mac.

Sorry how do I get the jar? I'm pretty new to java development, so simple lumens terms would be brilliant :D

  • 0

Alright, in Java to access a Database you need a 'Driver.' Drivers are specific to the type of database you're connecting to (mysql, postgresql, ms access). They are usually in a jar file and you put them in your lib folder. The original project probably had the driver you needed. Also make sure you're using the same SDK version.

Then you do what Antaris said:

static {
        try {
                Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
                Class forName("driver.class.name"); //this is the class of the Driver, the Driver maker will have information for which class to use
        } catch (ClassNotFoundException ex) {
                System.err.println("JDBC ODBC Bridget Driver not found.");
        }
}

public static Connection getConnection(string fileName) {
        string connection = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=" + fileName + ";DriverID=22;ReadOnly=false;";
        return DriverManager.getConnection(connection, "", "");
}

Here is a list of Drivers for MS Access: http://developers.sun.com/product/jdbc/drivers/search_results.jsp?jdbc_version=0&vendor_name=&cert_mode=and&jdbc_driver_type_mode=and&dbms=6&dbms_mode=and&features_mode=and&results_per_page=50&submit=Search

Here is instructions about these Drivers: http://java.sun.com/j2se/1.3/docs/guide/jdbc/getstart/bridge.doc.html

It would also be useful if you posted some code you're using. The code to connect to the database would be helpful.

  • 0

Ok this is the code

 public ResultSet insertDataConnection(String sql) throws Exception, SQLException{
        //String fileName = "C:\\Database\\database.mdb";
        String fileName = "/Users/Matt/Documents/CSSD/Application/database.mdb";
        String dbString = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=" + fileName + ";DriverID=22;READONLY = FALSE}";
        ResultSet results = null;
        System.out.println(DriverManager.getConnection(dbString,"",""));

        try{
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            connection = DriverManager.getConnection(dbString);
            statement = connection.createStatement();
            results = statement.executeQuery(sql);
            return results;
        }
        catch(Exception e){
            //System.out.println(e);
        }
        return null;
    }

    private static Connection getConnection() throws Exception {
        String driver = "sun.jdbc.odbc.JdbcOdbcDriver";
        String url = "jdbc:odbc:database.mdb";
        String username = "";
        String password = "";
        Class.forName(driver);
        return DriverManager.getConnection(url, username, password);
    }

if it is any help also I'm using netbeans!

And for the MS access driver is there any that are free all the ones i can see are paid/trails.

  • 0

I looked around a bit and found this: http://forums.sun.com/thread.jspa?threadID=5380580

You'll need to find a OBJC Driver for Mac/Linux. But it seems that its hard to come by/figure out. I'm sorry I can't help much beyond that. Might just need to Boot Camp or virtualize Windows for your course.

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Posts

    • Apart from a few very specific hiccups, Windows 11 has been good for me. Rock solid and stable. Unpopular opinion, I know, but it's mine.
    • No. Windows 8 had little to no spywhare, is actually faster than 7 but it has the dreaded start screen, nothing that you could not fix with start8. Windows ME crashed often, but was shotlived and replaced by XP, which is a much better windows in itself.
    • Windows 8 was uninspiring but it was fine / worked. It was just overshadowed by how great Windows 7 was. Windows ME seem to be just unstable for most people - I was using Windows 2000, which was far superior. The two best versions are Windows 7 and 2000
    • I don't think ME was that bad. The stability issues were mostly caused by drivers. This was when the switch from vxd to wdm was happening. The other complaint was not being able to shut down into DOS anymore which was silly with XP right around the corner.
    • As much as I hated Windows 8, although I never used it personally on any of my own machines, I think Windows Me was hands down the worst OS from MS. I have Windows 11 on 2 unsupported machines and haven't had any issues and I actually kind of like it. Still hate how slow Windows updates are though.
  • Recent Achievements

    • Rookie
      +ChiefOfNeo went up a rank
      Rookie
    • One Month Later
      Tom Schmidt earned a badge
      One Month Later
    • Week One Done
      Tom Schmidt earned a badge
      Week One Done
    • One Year In
      Tom Schmidt earned a badge
      One Year In
    • One Month Later
      JimErn earned a badge
      One Month Later
  • Popular Contributors

    1. 1
      +primortal
      453
    2. 2
      +Edouard
      176
    3. 3
      PsYcHoKiLLa
      122
    4. 4
      Michael Scrip
      81
    5. 5
      Xenon
      75
  • Tell a friend

    Love Neowin? Tell a friend!