17 October 2004 - java_dev (original) (raw)

Update: I forgot to mention the most important bit! I'm running this on Fedora Core 2 (a type of Linux, if you've not heard of it.)

For a Java class I'm taking, I have to connect to an Access database using JDBC. The instructor has provided the .mdb file, but my class keeps failing with a NullPointerException at getConnection().

import java.sql.*;

public class Connect { public static void main(String[] args) { // I've also tried a relative path: "./Books.mdb" String filename = "/home/ovid/projects/homework/java2/Week4/SourceCode/Database/OvidTest/Books.mdb"; String database = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=" + filename + ";"; try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

        // Enable logging
        DriverManager.setLogStream(System.err);

        print("Getting connection");

        Connection conn =
            DriverManager.getConnection(database, "", "");

        SQLWarning warn = conn.getWarnings();

        while (warn != null) {
            print("SQLState: " + warn.getSQLState());
            print("Message:  " + warn.getMessage());
            print("Vendor:   " + warn.getErrorCode());
            print("");
            warn = warn.getNextWarning();
        }
        conn.close();
    }
    catch (ClassNotFoundException e) {
        print("Can't load driver: " + e);
    }
    catch (SQLException e) {
        print("Database access failed: " + e);
    }
}

static private void print(String message) {
    System.out.println(message);
}

}

The output is:

(I've put backslashes at the end of long lines to indicate that the next line is part of that line)

Getting connection DriverManager.getConnection("jdbc:odbc:driver={Microsoft Access Driver
(*.mdb)};DBQ=/home/ovid/projects/homework/java2/Week4/SourceCode/Database/OvidTest/Books.mdb") trying driver[className=sun.jdbc.odbc.JdbcOdbcDriver,sun.jdbc.odbc.JdbcOdbcDriver@14f8dab] Driver.connect (jdbc:odbc:driver={Microsoft Access Driver
(
.mdb)};DBQ=/home/ovid/projects/homework/java2/Week4/SourceCode/Database/OvidTest/Books.mdb) JDBC to ODBC Bridge: Checking security No SecurityManager present, assuming trusted application/applet JDBC to ODBC Bridge 2.0001 Current Date/Time: Sun Oct 17 13:10:01 PDT 2004 Loading JdbcOdbc library Unable to load JdbcOdbc library Exception in thread "main" java.lang.NullPointerException at sun.jdbc.odbc.JdbcOdbcDriver.initialize(JdbcOdbcDriver.java:436) at sun.jdbc.odbc.JdbcOdbcDriver.connect(JdbcOdbcDriver.java:153) at java.sql.DriverManager.getConnection(DriverManager.java:512) at java.sql.DriverManager.getConnection(DriverManager.java:171) at Connect.main(Connect.java:17)

I've triple checked the patch and the spelling (and case) of the mdb file. The mdb file is in the same directory as my class and '.' is in my CLASSPATH (I'm running the program from that directory.)

Since the instructor appears to do all of his work on a Windows box, his examples have all been geared toward that platform. So far, posting in other forums has been fruitless. When I am done, my final work gets sent back to him and it still has to run, so I am leery about installing a different ODBC driver that he might not have access to (no pun intended :)