• 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 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
  On 30/03/2010 at 11:09, dontocsata said:

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 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

    • Microsoft is removing legacy drivers from Windows Update by Usama Jawad Last month, we learned that Microsoft is making major changes to the development of hardware drivers in Windows. This included the retirement of Windows Metadata and Internet Services (WMIS), along with the process for pre-production driver signing. Now, the Redmond tech firm has informed partners that it will be getting rid of old drivers in Windows Update. In what is being described as a "strategic" move to improve the security posture and compatibility of Windows, Microsoft has announced that it will be performing a cleanup of legacy drivers that are still being delivered through Windows Update. Right now, the first phase only targets drivers that already have modern replacements present in Windows Update. As a part of its cleanup process, Microsoft will expire legacy drivers so that it is not offered to any system. This expiration involves removing audience segments in the Hardware Development Center. Partners can still republish a driver that was deemed as legacy by Microsoft, but the firm may require a justification. Once the Redmond tech giant completes its first phase of this cleanup, it will give partners a six-month grace period to share any concerns. However, if no concerns are brought forward, the drivers will be permanently eradicated from Windows Update. Microsoft has emphasized that this will be a regular activity moving forward and while the current phase only targets legacy drivers with newer replacements, the next phases may expand the scope of this cleanup and remove other drivers too. That said, each time the company takes a step in this direction, it will inform partners so that there is transparency between both parties. Microsoft believes that this move will help improve the security posture of Windows and ensure that an optimized set of drivers is offered to end-users. The firm has asked partners to review their drivers in Hardware Program so that there are no unexpected surprises during this cleanup process.
    • No idea, but I had a client the other week that lost the entire drive to it. I suggested relying on the Samsung T7's instead. The Sandisk Extreme's had reliability issues too.
    • I use it every day so personally yes I need it, or rather I want it. I use OpenShell though, not the garbage modern Start Menu. I just counted and at the moment I have a total of 92 program shortcuts organized into six folders almost exactly the way I did back in Windows 95. I can get to any program I want to run very quickly. I never use Search to find or run programs.
    • I do miss the Apps view from Windows 8.1 Update.
    • I use the search function and little else since Windows 11 (but there are times where Saved Searches take precedence since the search feature on the Start menu is worse than before). I use other features in previous releases.
  • Recent Achievements

    • One Month Later
      gowtham07 earned a badge
      One Month Later
    • Collaborator
      lethalman went up a rank
      Collaborator
    • Week One Done
      Wayne Robinson earned a badge
      Week One Done
    • One Month Later
      Karan Khanna earned a badge
      One Month Later
    • Week One Done
      Karan Khanna earned a badge
      Week One Done
  • Popular Contributors

    1. 1
      +primortal
      671
    2. 2
      ATLien_0
      265
    3. 3
      Michael Scrip
      213
    4. 4
      +FloatingFatMan
      169
    5. 5
      Steven P.
      156
  • Tell a friend

    Love Neowin? Tell a friend!