JDBC driver MS Access connection

这一生的挚爱 提交于 2019-11-27 01:59:28

问题


I want connect my MS access file with Java GUI program,but I have problem with connection....

I have Windows 7 64b, and ms office 2007. When I opened the ODBC driver manager in the control panel I havent found any driver for Microsoft Access (maybe when I started the ODBC is started running the 64bit ODBC, now I think is running the 32bit ODBC. I read this and I make it : "jdbc-odbc connection for window 7 64 bit machine.. 1 . Right click Data source (ODBC)..go to properties change the folloing thing

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

press enter and continue as admin source: source link " ) Now when I start in conctrol pannel the ODBC I can see the driver screenshoot

My program code(I tried two ways but I have same error):

        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] Data source name not found and no default driver specified


回答1:


Use UCanAccess JDBC Driver :

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");

So for your example it will be Connection conn=DriverManager.getConnection("jdbc:ucanaccess://"+path)




回答2:


If you are using Windows 64-bit you probably need to go to this path

C:/Windows/SysWOW64/odbcad32.exe

Then I noticed that you are using the direct path instead creating new System DSN, your direct path is correct till the path to the access file you must give the full path like this :

jdbc:odbc:Driver= Microsoft Access Driver (*.mdb, *.accdb);DBQ=path/to/Invertory.mdb"

To get the path you probably need to use java.io.File that have a method returns the abslute path to the file see the example :

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();
    }
}



回答3:


I answered a similar question enter link description here a while back.

Basically at that time:

  1. You could connect to Ms-Access from 32 bit java through the JDBC-ODBC bridge
  2. You could not connect to a 32 bit Odbc driver through the JDBC-ODBC from 64 bit java. There was a message telling you that you can only connect from a 32 bit programs
  3. While Microsoft does provide a 64 bit Ms-Access driver, it did not work with Java's 64 bit JDBC-ODBC driver.

Since then there seems to be a new open-source Ms-Access JDBC Driver Ms-Access JDBC driver. I have no Idea how good it is.




回答4:


You just missing something in your code right here :

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

You need to add {} between Driver= and )=; . Like this Below

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



回答5:


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);



回答6:


The problem is that you should run on Java 32 bit try to install latest JDK and it will work

I run it using JDK version "jdk-7u67-windows-i586.exe"




回答7:


On a 64 bit system, you should:

  1. run as admin accessdatabaseengine_64.exe
  2. run java - 7-64 bit - jre.



回答8:


if you are working in NETBEANS then after unzipping ucanacess.zip file add all jar file in the classpath using property window of project click on compile tab and add jar file then compile and test app.




回答9:


JDBC-ODBC MS-ACCESS CONNECTION STOPPED WORKING IN JDK8. I solved the issue by installing JDK7 along with JDK8 in the same PC, once installed JDK7 I assigned it as the JDK version to use in my project as follows in Netbeans:

1.RIGHT CLICK THE PROJECT IN THE LIST > CLICK PROPERTIES

2.CLICK LIBRARIES ON THE LEFT NAVIGATION TREE

3.CLICK BUTTON MANAGE PLATFORMS > CLICK BUTTON ADD PLATFORM...

4.FOLLOW WIZARD, DESPITE IT SHOWS JAVA STANDARD EDITION CLICK NEXT

5.NAVIGATE TO C:\Program Files (x86)\Java AND SELECT THE FOLDER OF JDK7 > CLICK NEXT

6.THE FIELD AUTOFILL WITH THE RIGHT INFO... > THEN CLICK FINISH

7.SELECT THE JDK PLATFORM FROM THE LIST > CLICK CLOSE > OK

8.JDK7 SHOULD SHOW IN LIBRARIES PACKAGE.

JDK7 in Libraries Package Click Back in Browser to return here after looking at the image...

From here on everything must run smoothly.

Hope it solves your problem.

Thanks.



来源:https://stackoverflow.com/questions/16626301/jdbc-driver-ms-access-connection

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!