it-swarm.com.de

JDBC-Treiber MS Access-Verbindung

Ich möchte meine MS Access-Datei mit dem Java-GUI-Programm verbinden, aber ich habe Probleme mit der Verbindung ....

Ich habe Windows 7 64b und ms office 2007 ... Wenn ich den Treibermanager ODBC in der Systemsteuerung öffnete, habe ich noch keinen Treiber für Microsoft Access gefunden (vielleicht wurde beim Start von ODBC gestartet Ich arbeite mit dem 64-Bit-ODBC, jetzt denke ich, läuft der 32-Bit-ODBC. Ich lese das und mache es: .__ (ODBC) .. Gehe zu Eigenschaften, um das Folgende zu ändern

target [% SystemRoot%\SysWOW64\odbcad32.exe] Start in: [% SystemRoot%\System32]

drücken Sie die Eingabetaste und fahren Sie als Administrator fort. Quelle: Quelllink ") Wenn ich nun im Steuerungsfeld die ODBC starte, kann ich den Treiber screenshoot sehen.

Mein Programmcode (ich habe zwei Möglichkeiten ausprobiert, aber ich habe den gleichen Fehler):

        public void Connect() {
        try {
            Class.forName("Sun.jdbc.odbc.JdbcOdbcDriver");

 //    String DatabaseFile = "D:Java/Invertory.mdb";       
//            String DATABASE =
//                    "jdbc:odbc:Driver="
//                    + "{Microsoft Access Driver (*.mdb, *.accdb)};"
//                    + "DBQ=" + DatabaseFile;`enter code here`
 String DATABASE ="jdbc:odbc:Driver= Microsoft Access Driver (*.mdb, *.accdb);DBQ=Invertory.mdb";
           CONEX = DriverManager.getConnection(DATABASE);

        } catch (Exception X) {
          X.printStackTrace();
            //JOptionPane.showMessageDialog(null,e);
        }
    }

error

Java.sql.SQLException: [Microsoft] [ODBC Driver Manager] Der Datenquellenname wurde nicht gefunden und es wurde kein Standardtreiber angegeben

8
artiny

Verwenden Sie UCanAccess JDBC-Treiber:

Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
Connection conn=DriverManager.getConnection("jdbc:ucanaccess://<mdb or accdb file path>",user, password); 
for example: 
Connection conn=DriverManager.getConnection("jdbc:ucanaccess://c:/pippo.mdb");

Für Ihr Beispiel wird es also Connection conn=DriverManager.getConnection("jdbc:ucanaccess://"+path) sein

12
Anthony O.

Wenn Sie Windows 64-Bit verwenden, müssen Sie wahrscheinlich zu diesem Pfad wechseln

C: /Windows/SysWOW64/odbcad32.exe

Dann habe ich festgestellt, dass Sie den direkten Pfad verwenden, anstatt einen neuen System DSN zu erstellen. Ihr direkter Pfad ist korrekt, bis der Pfad zur Datei access den vollständigen Pfad wie folgt angeben muss:

jdbc: odbc: Treiber = Microsoft Access-Treiber (* .mdb, * .accdb); DBQ = Pfad/zu/Invertory.mdb "

Um den Pfad zu erhalten, müssen Sie wahrscheinlich Java.io.File verwenden, die über eine Methode den abslute-Pfad zur Datei zurückgibt. Siehe Beispiel:

import Java.sql.*;
public class TestConnection {
    Connection con ;
    Statement st ;
    ResultSet rs ;
    String db;
    public TestConnection (){
        try{
            String path = new Java.io.File("Invertory.mdb").getAbsolutePath();
        db ="JDBC:ODBC:Driver=Microsoft Access Driver (*.mdb, *.accdb); DBQ="+path;
            doConnection();
        } catch(NullPointerException ex){
                ex.printStackTrace();
            }

    }

    public void doConnection(){
        try{
            Class.forName("Sun.jdbc.odbc.JdbcOdbcDriver");
            con = DriverManager.getConnection(db);
            st = con.createStatement();
            rs = st.executeQuery("select * from Invertory");
            while(rs.next()){
                System.out.println(rs.getObject(1));
            }
        }catch(SQLException | ClassNotFoundException ex){
            System.out.println(ex.toString());

        }

    }
    public static void main(String...argS){
        new TestConnection();
    }
}
2
Azad

Ich habe eine ähnliche Frage beantwortet Linkbeschreibung hier eingeben vor einiger Zeit.

Grundsätzlich damals:

  1. Sie können von 32-Bit-Java aus über die JDBC-ODBC-Bridge eine Verbindung zu Ms-Access herstellen
  2. Es konnte keine Verbindung zu einem 32-Bit-Odbc-Treiber über JDBC-ODBC von 64-Bit-Java hergestellt werden. Es wurde eine Meldung angezeigt, dass Sie nur über 32-Bit-Programme eine Verbindung herstellen können
  3. Microsoft stellt zwar einen 64-Bit-MS-Access-Treiber zur Verfügung, funktionierte jedoch nicht mit dem Java-64-JDBC-ODBC-Treiber von Java.

Seitdem scheint es einen neuen Open-Source-Ms-Access-JDBC-Treiber Ms-Access-JDBC-Treiber zu geben. Ich habe keine Ahnung, wie gut es ist.

2
Bruce Martin
final String fileName = "c:/myDataBase.mdb"
Class.forName("Sun.jdbc.odbc.JdbcOdbcDriver");
String url = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ="+fileName;
Connection con = DriverManager.getConnection(url,username,password);
0
Avijit Das

Sie haben hier gerade etwas in Ihrem Code vermisst: 

db ="JDBC:ODBC:Driver=Microsoft Access Driver (*.mdb, *.accdb); DBQ="+path;

Sie müssen {} zwischen Driver= und )=; hinzufügen. Wie unten

db ="JDBC:ODBC:Driver={Microsoft Access Driver (*.mdb, *.accdb)}; DBQ="+path;
0
KaJasB