• 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
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, "", "");
}

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

  • 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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

    • No registered users viewing this page.