JDBC-ODBC-Treiber die Verbindung

Derzeit arbeite ich an einem Projekt für eine Klasse an meiner Universität. Ich Lerne über das verbinden und Bearbeiten von Datenbanken und mit Microsoft .accdb-Datei.

Hier ist was ich habe, so weit.

/* Perform database operations */
    try {
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        System.out.println("Driver loaded");

        connection = DriverManager.getConnection("jdbc:odbc:Lab3.accdb");
        System.out.println("Database connected");

        statement = connection.createStatement();

        ResultSet resultSet = statement.executeQuery("");

        while (resultSet.next()) {
            output.write("<p>" + resultSet.getString(1) + "\t" +
                resultSet.getString(2) + "\t" + resultSet.getString(3) + "</p>");
        }

        connection.close();
    } catch (ClassNotFoundException|SQLException e) {
        System.out.println("Database Access Error.");
        e.printStackTrace();
    }

Bei der Suche nach "Sonne.jdbc.odbc.JdbcOdbcDriver" ich bekomme die folgende Ausgabe.

SEVERE:   java.lang.ClassNotFoundException: sun.jdbc.odbc.JdbcOdbcDriver
at org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1761)
at org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1611)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:190)
at changepass.ChangePasswordServlet.processRequest(ChangePasswordServlet.java:47)
at changepass.ChangePasswordServlet.doGet(ChangePasswordServlet.java:83)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:318)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174)
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:357)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:260)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:188)
at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:191)
at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:168)
at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:189)
at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:288)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:206)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:136)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:114)
at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:838)
at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:113)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:115)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:55)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:135)
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:564)
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:544)
at java.lang.Thread.run(Thread.java:744)

Scheint es einfach genug, um durch Arbeit. Es scheint, dass ich bin fehlt der Treiber oder etwas entlang jenen Linien. Aber ich habe eine harte Zeit, herauszufinden, was zu tun ist über dieses. Ist der Treiber im Lieferumfang des JDK überall? Muss ich etwas herunterladen trennen? Kommt es auf meinem Betriebssystem? (Mac OS X 10.9). Oder bin ich einfach nur etwas falsch im code?

Ich würde mich über Hilfe freuen! Danke!

Zusätzliche Info:

[James@toodarkpark: ~]$ java -version
java version "1.7.0_45"
Java(TM) SE Runtime Environment (build 1.7.0_45-b18)
Java HotSpot(TM) 64-Bit Server VM (build 24.45-b08, mixed mode)
[James@toodarkpark: ~]$ 
  • Ich denke, dass die ODBC-bridge ist nur verfügbar, auf Windows-Systemen. Und außerdem: es geht entfernt werden, die in Java 8 vollständig.
  • haben Sie zusätzlichen jar-Dateien?
  • was ist das JDK, die Sie verwenden...?
  • [James@toodarkpark: ~]$ java -version java version "1.7.0_45" Java(TM) SE Runtime Environment (build 1.7.0_45-b18) Java HotSpot(TM) 64-Bit Server VM (build 24.45-b08, mixed mode) Dies ist, was ich habe. Was JAR-Dateien benötige ich? Irgendeine Idee, wo Sie diese herunterladen?
  • Auch nicht, wenn Sie eine Jdbc-Odcb-Brücke für MacOS X müssen Sie die ODBC-selbst, und dann müssen Sie einen ODBC-Treiber für MS Access. Viele Dinge, die Sie wahrscheinlich nicht haben.
  • Look at diese Antwort, kann es Ihnen einige Hinweise, vor allem SQLite Vorschlag 😉
  • Ja, ich habe etwas mehr Forschung und a_horse_with_no_name trifft den Nagel auf den Kopf. Ich bin gerade dabei, die Sie zum Booten einer Windows 8 VM und kümmern sich um diese Zuordnung gibt. Vielen Dank für Eure Hilfe an alle!
  • die Antwort in diesem Beitrag arbeitete für mich
  • Die Antwort in diesem Beitrag arbeitete für mich

InformationsquelleAutor James Manes | 2013-10-31
Schreibe einen Kommentar