Está dando esse erro quando tento rodar o programa “o dns especificado contem uma incompatibilidade de arquitetura entre driver e aplicativo”
Será que alguém sabe onde está o erro?
Esse é o código da classe:
você está tentando conectar via ODBC?
Que banco está usando?
ribclauport
Primeiramente edite seu post, e coloque seu código entra as tags code, é so clicar em cima no botão “Code”, antes e depois de seuu código, assim ficará com a aparência:
System.out.print("É necessário dizer qual o erro detalhado, o que está sendo printado no console!");
Você configurou a fonte de dados ODBC? Vai usar Access? Que sistema operacional está usando? é de 64 bits?
Bom se for usar outro banco de dados, por exemplo mysql, postgres, oracle… poderia usar drive jdbc, que seria mais simples, sendo necessário somente colocar
o jar no classpath, e assim usar as configurações necessárias.
Esse post pode te ajudar no conceito:
Aqui no Blog do nobre amigo Camilo tem um exemplo mastigado:
lucaslzl
Eu comecei a utilizar o netbeans 7.1, estava usando o 5.5 por causa de umas video aulas. Criei um pacote e uma classe com o mesmo no do outro, copiei e colei o código, e configurei o odbcad32.exe com o novo banco da mesma maneira de antes, o sistema operacional da minha maquina é 64, e o banco de dados é o Access. O erro que deu é: “java.sql.SQLException: [Microsoft][ODBC Driver Manager] O DSN especificado contem uma incompatibilidade de arquiteturas entre Driver e o Aplicativo”.
packageutilitarios;importjava.sql.*;importjavax.swing.JOptionPane;/** * * @author Lucas */publicclassconexao{finalprivateStringdriver="sun.jdbc.odbc.JdbcOdbcDriver";finalprivateStringurl="jdbc:odbc:BD";finalprivateStringusuario="";finalprivateStringsenha="";privateConnectionconexao;publicStatementstatement;publicResultSetresultset;publicbooleanconecta(){booleanresult=true;try{Class.forName(driver);conexao=DriverManager.getConnection(url,usuario,senha);//JOptionPane.showMessageDialog(null, "Conectou com o banco de dados");}catch(ClassNotFoundExceptionDriver){JOptionPane.showMessageDialog(null,"Driver nao localizado: "+driver);result=false;}catch(SQLExceptionFonte){JOptionPane.showMessageDialog(null,"Deu erro na conexão "+"com a fonte de dados"+Fonte);result=false;}returnresult;}publicvoiddesconecta(){booleanresult=true;try{conexao.close();JOptionPane.showMessageDialog(null,"Banco Fechado");}catch(SQLExceptionFonte){JOptionPane.showMessageDialog(null,"Não foi possivel fechar o banco de dados");result=false;}}publicvoidexecuteSQL(Stringsql){try{statement=conexao.createStatement();resultset=statement.executeQuery(sql);}catch(SQLExceptionsqlex){JOptionPane.showMessageDialog(null,"Não foi possivel "+"executar o comando SQL"+sqlex);}}}
ribclauport
Este erro, esta dizendo na verdade que existe uma incompatibildade entre o drive odbc e a arquitetura, ou seja provavelmente as configurações do seu novo
netbeans, não estão batendo com o drive! tente configurar seu netbeans para usar um jdk de 32 bits! este erro geralmente acontece com o windows 7…
veja se esse post pode te ajudar, e repito o problema é em relação ao drive 32 bist! conflita com jdk…
Lembrando que se for web o projeto ainda tem a questão do container:
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.
Se resolver por favor poste qual foi o procedimento.
Se resolver posta ae.
lucaslzl
Eu não consegui descobrir o porque do problema, para “resolve-lo” apenas mudei para o banco de dados MySQL. Agora ele funciona perfeitamente. Obrigado pela ajuda e atenção.
ribclauport
Ok, lembrando que provavelmente você agora está usando um “drive” jdbc, e não mais “obdc”, sendo assim na verdade o problema foi “abandonado”, e foi usada outra tecnologia para conexão. Poderia postar como ficou sua classe de conexão para analisarmos?
aguardo.
lucaslzl
Obrigado pela ajuda, o código ficou assim:
packageutilitarios;importjava.sql.*;importjavax.swing.JOptionPane;/** * * @author Lucas */publicclassconexao{finalprivateStringdriver="org.gjt.mm.mysql.Driver";finalprivateStringurl="jdbc:mysql://localhost/anabd";finalprivateStringusuario="root";finalprivateStringsenha="";privateConnectionconexao;publicStatementstatement;publicResultSetresultset;publicbooleanconecta(){booleanresult=true;try{Class.forName(driver);conexao=DriverManager.getConnection(url,usuario,senha);//JOptionPane.showMessageDialog(null, "Conectou com o banco de dados");}catch(ClassNotFoundExceptionDriver){JOptionPane.showMessageDialog(null,"Driver nao localizado: "+Driver);result=false;}catch(SQLExceptionFonte){JOptionPane.showMessageDialog(null,"Deu erro na conexão "+"com a fonte de dados"+Fonte);result=false;}returnresult;}publicvoiddesconecta(){booleanresult=true;try{conexao.close();JOptionPane.showMessageDialog(null,"Banco Fechado");}catch(SQLExceptionFonte){JOptionPane.showMessageDialog(null,"Não foi possivel fechar o banco de dados");result=false;}}publicvoidexecuteSQL(Stringsql){try{statement=conexao.createStatement();resultset=statement.executeQuery(sql);}catch(SQLExceptionsqlex){JOptionPane.showMessageDialog(null,"Não foi possivel "+"executar o comando SQL"+sqlex);}}}