Ich dreh durch mit JDBC & ODBC!

Status
Nicht offen für weitere Antworten.

Anyone

Mitglied
Erstmal folgender Code:

Java:
    public static Connection createConnection(String driver, String url)
    {
        // Datenbankverbindungsveriable
        Connection linkID = null;

        try
        {
            // Initiierung des JDBC-Treibers
            Class.forName(driver).newInstance();
        }
        catch (Exception e) // Der JDBC-Treiber konnte nicht initiiert werden.
        {
            e.printStackTrace();
        }

        try
        {
            // Versuch, eine Datenbankverbindung zu initiieren
            linkID = DriverManager.getConnection("jdbc:odbc:" + url);
        }
        catch (SQLException e) // Die Datenbankverbindung konnte nicht aufgebaut werden.
        {
            e.printStackTrace();
        }

        // Die Datenbankverbindung wird zurückgeliefert
        return linkID;
    }

Wenn ich nun folgenden Code aufrufe:

Java:
ConnectionFactory.createConnection("sun.jdbc.odbc.JdbcOdbcDriver", "C:\\Users\\X\\Desktop\\Autoverleih\\autoverleih2003.mdb");

Kommt die Exception:

Der Datenquellenname ist zu lang

What the fuck? Entweder werde ich durch meinen derzeitigen Schlafentzug unaufmerksam, oder ich habe irgendwas vergessen... Könnt ihr mir bitte weiterhelfen? Danke.
 
Vielleicht den Datenquellnamen kürzen? 😉

z.B in deinem Projekt einen Unterordner mit dem Namen data, db oder sonstwas erstellen, mdb da hinein kopieren, und dann die URL mit der relativen Pfadangabe zur mdb angeben.
 
Zuletzt bearbeitet:
Vielleicht den Datenquellnamen kürzen? 😉

z.B in deinem Projekt einen Unterordner mit dem Namen data, db oder sonstwas, mdb da hinein kopieren, und dann die URL mit der relativen Pfadangabe der mdb angeben.

Whaaat?

Java:
ConnectionFactory.createConnection("sun.jdbc.odbc.JdbcOdbcDriver", "C:\\Users\\Andre\\Desktop\\Autoverleih\\a2003.mdb")

Selbiger Fehler tritt auf...
 
Es wird ja auch selbiger Pfad benutzt.. nur der mdb-Name wurde geändert.

Edit: du benutzt eine absolute Pfadangabe, versuchs mal mit einer relativen Pfadangabe - das sollte klappen.
 
Java:
ConnectionFactory.createConnection("sun.jdbc.odbc.JdbcOdbcDriver", new File("db\\a2003.mdb"))

Jetzt erscheint noch zusätzlich eine Meldung:

Code:
Der Datenquellenname wurde nicht gefunden und es wurde kein Standardtreiber angegeben.

Irgendwie komm ich mir gerade hintergangen von Java vor 🙁
 
Zuletzt bearbeitet:
Wenn der Bauer nicht schwimmen kann, dann ist die Badehose schuld 😉

Mal ernsthaft, das hier:
Java:
"C:\\Users\\X\\Desktop\\Autoverleih\\autoverleih2003.mdb"
sieht falsch aus 😉
 
Und wie wäre es deiner Meinung nach richtig?

Also ich würde anstatt
Code:
"C:\\Users\\X\\Desktop\\Autoverleih\\autoverleih2003.mdb"

mal
Code:
"C:/Users/X/Desktop/Autoverleih/autoverleih2003.mdb"

versuchen, wenns dann nicht klappt, melde dich nochmal 🙂
 
Also ich würde anstatt
Code:
"C:\\Users\\X\\Desktop\\Autoverleih\\autoverleih2003.mdb"

mal
Code:
"C:/Users/X/Desktop/Autoverleih/autoverleih2003.mdb"

versuchen, wenns dann nicht klappt, melde dich nochmal 🙂

Kommt halt dieselbe Fehlermeldung wie zuvor, dass der Datenquellenname zu lang ist.
 
Hm normalerweise liegt der maximale "Dateipfad" bei 255...

Kannst ja mal ausprobieren den Driver in den Classpath zu setzen, vielleicht findet er ihn nicht...
 
Ich dachte, dass es für Access standardmäßig einen Treiber gibt?

Um in Java eine Verbindung zu Acces Datenbanken aufzubauen brauch man eine sogenannte "ODBC und JDBC Bridge". Der Driver ist beim Java SDK dabei (also der ODBC). Falls das nicht funktioniert sollteste das mal mit der Zeile hier ausprobieren:

Java:
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

(Jedoch muss dafür der Driver installiert sein!)
 
Um in Java eine Verbindung zu Acces Datenbanken aufzubauen brauch man eine sogenannte "ODBC und JDBC Bridge". Der Driver ist beim Java SDK dabei (also der ODBC). Falls das nicht funktioniert sollteste das mal mit der Zeile hier ausprobieren:

Java:
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

(Jedoch muss dafür der Driver installiert sein!)

Also "sun.jdbc.odbc.JdbcOdbcDriver" steht ja bereits drin, wie der Factory zu entnehmen ist.
 
Das ist ja super 🙂
Falls jedoch keine Verbindung zur Datenbank Fehler auftreten (Also du keine Datenbank bekommst) liegt es am restlichen Code 🙂
 
Nene alles gut, sag nur falls du ein weiteres Problem bekommst, liegt es wahrscheinlich das die Verbindung zur Datenbank (sprich ID etc.) falsch gesetzt sind. 🙂

Jo, aber damit ist das grundlegende Problem ja leider noch nicht aus der Welt geschaffen. 🙁 Fällt dir bzw. jemanden anderen nicht noch eine andere Möglichkeit ein?
 
Hab ich den Post falsch interpretiert? Weil ich dachte damit meinst du, dass KEINE Fehlermeldung mehr kommt...

Jo sorry, meinte, dass keine Fehlermeldung kommt, wenn man nur den Treiber lädt. ^^

PS: Ich hasse es, wenn magic in meinem System praktiziert wird. In Bezug auf MySQL hat alles(!) geklappt, aber für unser Schulprojekt müssen wir ja ausgerechnet Access benutzen. -.-
 
Und wie wäre es deiner Meinung nach richtig?
Anders 😉

Mal ernsthaft, Doku lesen gehört wohl nicht zu deinen Stärken,oder?
Das solltest du ändern, sonst wird da nix 😉

Frapos link enthält die Lösung:
Java:
"jdbc:odbc:DRIVER={Microsoft Access Driver (*.mdb)};DBQ=C:/Programme/Microsoft Office/Office/Samples/Nordwind.mdb"
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben