Ligação de acesso ao MS do controlador JDBC

quero ligar o meu ficheiro MS access ao programa Java GUI,mas tenho problemas com a ligação....

Tenho o Windows 7 64b e o MS office 2007. Quando abri o ODBC driver manager no painel de controle, não encontrei nenhum driver para o Microsoft Access (talvez quando comecei o ODBC começou a correr o ODBC 64bit, agora eu acho que está executando o ODBC 32bit. Li isto e consegui. : "jdbc-odbc connection for window 7 64 bit machine.. 1 . Fonte de dados do botão direito do rato (ODBC)..ir as propriedades alteram o following

alvo [%SystemRoot%\SysWOW64\odbcad32.exe ] iniciar em: [%SystemRoot%\System32 ]

Carregue em enter e continue como fonte administrativa: ligação de origem " Agora, quando eu começar em conctrol pannel o ODBC eu posso ver o driver screenshoot

o meu código de programa (tentei de duas maneiras, mas tenho o mesmo erro):

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

erro

Java.banco.SQLException: [Microsoft] [ODBC Driver Manager] fonte de dados o nome não foi encontrado e não foi indicado nenhum controlador por omissão

 8
Author: rjdkolb, 2013-05-18

9 answers

Utilizar 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");
Então, por exemplo,Connection conn=DriverManager.getConnection("jdbc:ucanaccess://"+path)
 10
Author: Anthony O., 2014-12-04 09:44:59

Se estiver a usar o Windows 64-bit provavelmente terá de ir para este caminho

C:/Windows/SysWOW64/odbcad32.exe

Então eu notei que você está usando o caminho direto em vez de criar Novo System DSN, o seu caminho direto está correto até o caminho para o arquivo acesso você deve dar o caminho completo como este:

Jdbc: odbc: Driver= Microsoft Access Driver (*.mdb,*.accdb); DBQ=caminho/para / inverso.mdb "

Para obter o caminho que você provavelmente precisa para usar java.io.File que tenha um método devolve a localização absluta do ficheiro, veja o exemplo:

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
Author: Azad, 2013-05-19 16:34:03

Respondi a uma pergunta semelhante indique aqui a descrição da ligação há algum tempo.

Basicamente nessa altura:

    Pode ligar-se ao Ms-Access a partir de 32 bits java através da ponte JDBC-ODBC Não foi possível ligar-se a um controlador Odbc de 32 bits através do JDBC-ODBC de 64 bits java. Havia uma mensagem dizendo que você só pode se conectar a partir de um programa de 32 bits
  1. Embora a Microsoft forneça um driver de acesso Ms de 64 bits, não funcionou com o Java 64 um condutor JDBC-ODBC.

Desde então parece haver um novo controlador de código aberto do Ms-Access JDBC Ms-Access JDBC driver. Não faço ideia de como é bom.

 2
Author: Bruce Martin, 2017-05-23 12:34:21
Falta-te algo no teu código.
db ="JDBC:ODBC:Driver=Microsoft Access Driver (*.mdb, *.accdb); DBQ="+path;

Tem de adicionar {} entre Driver= e )=; . Como este abaixo

db ="JDBC:ODBC:Driver={Microsoft Access Driver (*.mdb, *.accdb)}; DBQ="+path;
 0
Author: KaJasB, 2013-12-15 09:58:10
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
Author: Avijit Das, 2015-08-02 06:24:48

O problema é que você deve executar em Java 32 bit tentar instalar o JDK mais recente e ele vai funcionar

Executei-o usando a versão JDK "jdk-7u67-windows-i586.exe"

 -1
Author: Ahmed Salem, 2014-09-02 09:05:20

Num sistema de 64 bits, deve:

  1. correr como admin accessdatabaseengine_64.exe
  2. Execute java-7-64 bit-jre.
 -1
Author: jrjayswal, 2017-01-25 14:14:24
Se está a trabalhar em NETBEANS, depois de abrir a ucanacess.ficheiro zip adicione todo o ficheiro jar no classspath usando a janela de propriedades do projecto carregue na página compile e adicione o ficheiro jar e depois compile e teste a aplicação.
 -1
Author: Manoj Pandey, 2017-05-07 15:22:27

A LIGAÇÃO MS-ACCESS JDBC-ODBC DEIXOU DE FUNCIONAR NO JDK8. Eu resolvi o problema instalando o JDK7 junto com o JDK8 no mesmo PC, uma vez instalado o JDK7 eu o designei como a versão JDK para usar no meu projeto como segue em Netbeans:

1.CARREGUE COM O BOTÃO DIREITO NO PROJECTO NA LISTA > CARREGUE EM PROPRIEDADES

2.CARREGUE EM BIBLIOTECAS NA ÁRVORE DE NAVEGAÇÃO ESQUERDA

3.CARREGUE EM BOTÃO GERIR AS PLATAFORMAS > CARREGUE EM BOTÃO ADICIONAR PLATAFORMA...

4.SEGUIR O ASSISTENTE, APESAR DE MOSTRAR O PADRÃO JAVA EDIÇÃO CARREGUE EM NEXT

5.Navegar para C:\Program ficheiros (x86)\Java e seleccione a pasta do JDK7 > carregue em NEXT

6.O CAMPO AUTO-PREENCHER COM A INFORMAÇÃO CERTA... > DEPOIS CARREGUE EM TERMINAR

7.SELECCIONE A PLATAFORMA JDK DA LISTA > CARREGUE EM FECHAR > OK

8.O JDK7 DEVE APARECER NO PACOTE DE BIBLIOTECAS.

JDK7 no Pacote de Bibliotecas Clique de volta no navegador para retornar aqui depois de olhar para a imagem...

A partir de agora, tudo tem de correr bem. Esperança resolve o teu problema. Obrigado.
 -1
Author: J. Silvermann, 2018-07-03 16:44:30