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 followingalvo [%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
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)
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();
}
}
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
- 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.
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;
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);
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"
Num sistema de 64 bits, deve:
- correr como admin accessdatabaseengine_64.exe
- Execute java-7-64 bit-jre.
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.