Estou tentando criar uma classe de conexão Java/Access, porém nao estou conseguindo gerar a conexão com o banco criado.
O exemplo esta igual ao do livro.
segue abaixo
/*Exemplo - Livro JAVA 6: ENSINO DIDÁTICOCapítulo 13: Manipulação de Banco de Dados com Java*/importjava.sql.*;importjavax.swing.*;publicclassExemplo1301{publicstaticvoidmain(Stringargs[]){finalStringdriver="sun.jdbc.odbc.JdbcOdbcDriver";finalStringurl="jdbc:odbc:DRIVER={Microsoft Access Driver(*.mdb)};DBQ=c:/meubd/banco.mdb";try{Class.forName(driver);Connectionconnection=DriverManager.getConnection(url);JOptionPane.showMessageDialog(null,"Conexão realizada com sucesso");connection.close();}catch(ClassNotFoundExceptionerro){JOptionPane.showMessageDialog(null,"Driver JDBC-ODBC não encontrado!");}catch(SQLExceptionerro){JOptionPane.showMessageDialog(null,"Problemas na conexão com a fonte de dados");}}}
Também estou com o mesmo problema. Não consigo conectar ao Access.
código:publicstaticvoidmain(Stringargs[]){try{Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);// set this to a MS Access DB you have on your machineStringfilename=“C:/Users/Adriano/Desktop/BD/testee”;Stringdatabase=“jdbc:odbc:Driver={MicrosoftAccessDriver(*.mdb)};DBQ=”;database+=filename.trim()+“”;// add on to the end// now we can get the connection from the DriverManagerConnectioncon=DriverManager.getConnection(database,"","");}catch(Throwablethr){StringWritersw=newStringWriter();PrintWriterpw=newPrintWriter(sw);thr.printStackTrace(pw);JOptionPane.showMessageDialog(null,sw.toString());}
Será que alguém sabe qual é o problema?
Obs: Estou usando um note com Windows 7 e Access 2007
juliofsn
Thiago de Paula Beserra:
Da um erro do tipo: Nome da fonte de dados não encontrado e nenhum driver padrão especificado
O driver odbc do Access está instalado no sistema?
vá no Painel de Controle -> Ferramentas Administrativas -> Fontes de Dados (ODBC) e verifique entre os drivers instalados se ele está lá. Geralmente ele é instalado junto com o Office.
Thiago_de_Paula_Bese
entanglement:
Troque
catch(SQLExceptionerro){JOptionPane.showMessageDialog(null,"Problemas na conexão com a fonte de dados");}
Estou com o mesmo problema que o seu, mas já vi umas soluções na internet que não funcionaram para mim, mas podem vir a funcionar para vc.
Perguntas:
Vc está usando o windows 7? Pois, pelo q eu vi, normalmente este problema ocorre em pessoas que estão usando-o.
Vc já olhou na Fonte de dados(ODBC) do painel de controle para ver se os drives estão instalados?
Se for o windows 7, não aparecerão os drives lá. Acho q o meu problema está relacionado a isso.
Mas, se executarmos o seguinte linha no prompt:
C:\Windows\SysWOW64\odbcad32.exe
Aparecerá uma tela igual, mas com os drives(pelo q entendi são drives de 32 bits e não 64).
Existe outra forma de conectar com o Access, mas seria usando uma conexão ODBC criada na Fonte de dados(ODBC).
Se vc não estiver usando o windows 7 e quiser q eu fale sobre esta outra maneira, mande outra mensagem que eu tentarei explicar.
Se alguém souber algo sobre o meu problema e puder me ajudar, eu agradeço!!!
Thiago_de_Paula_Bese
AdrianoGomes:
Estou com o mesmo problema que o seu, mas já vi umas soluções na internet que não funcionaram para mim, mas podem vir a funcionar para vc.
Perguntas:
Vc está usando o windows 7? Pois, pelo q eu vi, normalmente este problema ocorre em pessoas que estão usando-o.
Vc já olhou na Fonte de dados(ODBC) do painel de controle para ver se os drives estão instalados?
Se for o windows 7, não aparecerão os drives lá. Acho q o meu problema está relacionado a isso.
Mas, se executarmos o seguinte linha no prompt:
C:\Windows\SysWOW64\odbcad32.exe
Aparecerá uma tela igual, mas com os drives(pelo q entendi são drives de 32 bits e não 64).
Existe outra forma de conectar com o Access, mas seria usando uma conexão ODBC criada na Fonte de dados(ODBC).
Se vc não estiver usando o windows 7 e quiser q eu fale sobre esta outra maneira, mande outra mensagem que eu tentarei explicar.
Se alguém souber algo sobre o meu problema e puder me ajudar, eu agradeço!!!
Bom cara, eu estou com o XP instalado no meu notebook. Acho que nossos problemas sao parecidos, porem, diferentes. NO meu caso, aparece la no painel de controle os caras instalados na minha maquina. Sobre a outra forma de fazer a conexão com o access, estou disponivel a aprender com você. Espero que você resolva o seu problema amigo, e de imediato.
Grato ! ! !
A
AdrianoGomes
tenta seguir este link:
A
AdrianoGomes
Se alguém conseguiu conectar com o Access usando o windows 7, poste como fez para que eu possa
tentar resolver o meu problema.
Já tentei de tudo, mas não consigo fazer esta conexão.
A
AdrianoGomes
Finalmente acho q descobri o meu problema.
Se alguém que esteja usando windows 7(64 bits) estiver tendo este problema, veja este link:
A
AdrianoGomes
Thiago,
Você conseguiu resolver o seu problema?
Pois estou com um problema que talvez vc saiba como resolver(caso vc tenha conseguido acessar o access).
vlw!!!
S
Sharles_Weima
Consegui solucionar esse problema através do link http://forum.clubedohardware.com.br/access-java-erro/794832 indicado pelo AdrianoGomes.
Ainda passei algum tempo pra resolver pq fiz com q o projeto usa-se a versão do jdk 32 bits, mas o server(Tomcat) continuava usando a versão de 64 bits.
Quando os 2 passaram a usar a mesma versão de 32 bits, o problema foi solucionado.
igor_jua
Pessoal, sei que vcs já encontraram uma solução.
Lendo o site do link passado, não entendi qual foi ela, mas fica aqui uma maneira de se criar uma conexão ODBC com ACCESS com tudo via código!
Você poderá fazer uma conexão com o access da seguinte maneira:
Primeiro vc precisa verificar qual é a versao do MS Officce que está instalado no teu pc…
Vc, faz isso indo na pasta C:/Arquivos d Programas/MicrosoftOffice/
e aqui dentro verifique se há uma pasta com o nome OFFICE11 -> Esta pasta é referente ao office 2003 abaixo
Se houver uma Pasta com o Nome OFFICE12-> Esta pasta é referente ao office 2007 em diante
Se houver as duas significa que seu Office é o 2003 com Leitor de arquivos para o 2007.(Crie uma conexão para o 2003 neste caso)
publicDataSource()throwsOfficeNaoInstaladoException{Stringcaminho=a.getArquivoConfig().getCaminhoBanco();//Aqui eu pego o caminho do arquivo do accessif(caminho==null||caminho.equals(""))return;this.DBQ=caminho;System.out.println(DBQ);CapturaVersaoOfficeversao=newCapturaVersaoOffice();intt=versao.findVersion();//Este método faz o procedimento de buscar a versão do officeif(t==-1){thrownewOfficeNaoInstaladoException();}if(t==0)this.url="jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ="+DBQ;//Esta Url é referente ao officce 2003if(t==1)this.url="jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ="+DBQ;//Esta Url é referente ao officce 2007usuario="";senha="";}//E este método cria e devolve uma conexão!publicConnectiongetConnection(){if(con==null){try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");con=DriverManager.getConnection(url,usuario,senha);System.out.println("================================ Conexao ativa! ================================");}catch(SQLExceptionex){Logger.getLogger(DataSource.class.getName()).log(Level.SEVERE,null,ex);}catch(ClassNotFoundExceptionex){Logger.getLogger(DataSource.class.getName()).log(Level.SEVERE,null,ex);}}returncon;}
Porém há alguns problemas na utilização do Access como DB.
Uma vez aberta uma Conexão ela não poderá ser fechada!(Semelhante ao Postgres)
Estruturação do SQL…(Aconcelho utilizarem a query do ACCESS para copiarem o código sql),
E algumas outras
Ela é um pouco complicada de se trabalhar…mas dpois que se aprende é bem legal!
D
diegojaques
ALGUÉM CONSEGUE ME AJUDA ? ESTÁ DANDO O PRIMEIRO catch (DRIVE NÃO LOCALIZADO)
utilizo windows 8.1 Microsoft acces 2010 e netbeans IDE 7.3.1
public class conexao {
finalprivateStringdriver="sun.jdbc.odbc.JdbcOdbcDriver";finalprivateStringurl="jdbc:odbc:DRIVER={Microsoft Access Driver(*.mdb)};"+"DBQ=c:/ESTOQUE/Banco de Dados/estoque.mdb";finalprivateStringusuario="";finalprivateStringsenha="";privateConnectionconexao;publicStatementstatement;publicResultSetresultset;
publicvoidexecuteSQL(Stringsql){try{statement=conexao.createStatement();resultset=statement.executeQuery(sql);}catch(SQLExceptionsqlex){JOptionPane.showMessageDialog(null,“nãofoipossivel”+“executaroComandoSQL”+sqlex+", o SQL passado foi"+sql);}}}
try{Class.forName(driver);conexao=DriverManager.getConnection(url,usuario,senha);JOptionPane.showMessageDialog(null,"Conectou legal com o banco");}catch(ClassNotFoundExceptionDriver){JOptionPane.showMessageDialog(null,"Drive não localizado"+Driver);}catch(SQLExceptionFonte){JOptionPane.showMessageDialog(null,"Deu erro na conexão com a fonte de dados"+Fonte);}}
}
O que sempre ocorre é um erro no Driver, com a mensagem descrita no ClassNotFoundException. É como se a API não tivesse o JDBC ODBC instalado, mas já li que ele vem padrão.
Me ajudem por favor…
R
Rocigno
A partir do Java 8 não da mais pra usar esse Driver (“sun.jdbc.odbc.JdbcOdbcDriver”)… Você deve usar o UCanAccess, segue um exemplo de código: