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:
public class conexao
{
final private String driver = “sun.jdbc.odbc.JdbcOdbcDriver”;
final private String url = “jdbc:odbc:BD”;
final private String usuario = “”;
final private String senha = “”;
private Connection conexao;
public Statement statement;
public ResultSet resultset;
public boolean conecta()
{
boolean result = true;
try
{
Class.forName(driver);
conexao = DriverManager.getConnection(url, usuario, senha);
//JOptionPane.showMessageDialog(null, "Conectou com o banco de dados");
}
catch(ClassNotFoundException Driver)
{
JOptionPane.showMessageDialog(null, "Driver nao localizado: "+driver);
result = false;
}
catch(SQLException Fonte)
{
JOptionPane.showMessageDialog(null, "Deu erro na conexão "+
"com a fonte de dados"+Fonte);
result = false;
}
return result;
}
public void desconecta()
{
boolean result = true;
try
{
conexao.close();
JOptionPane.showMessageDialog(null, "Banco Fechado");
}
catch(SQLException Fonte)
{
JOptionPane.showMessageDialog(null, "Não foi possivel fechar o banco de dados");
result = false;
}
}
public void executeSQL(String sql)
{
try
{
statement = conexao.createStatement();
resultset = statement.executeQuery(sql);
}
catch(SQLException sqlex)
{
JOptionPane.showMessageDialog(null, "Não foi possivel "+
"executar o comando SQL"+sqlex);
}
}
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:
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”.
package utilitarios;
import java.sql.*;
import javax.swing.JOptionPane;
/**
*
* @author Lucas
*/
public class conexao
{
final private String driver = "sun.jdbc.odbc.JdbcOdbcDriver";
final private String url = "jdbc:odbc:BD";
final private String usuario = "";
final private String senha = "";
private Connection conexao;
public Statement statement;
public ResultSet resultset;
public boolean conecta()
{
boolean result = true;
try
{
Class.forName(driver);
conexao = DriverManager.getConnection(url, usuario, senha);
//JOptionPane.showMessageDialog(null, "Conectou com o banco de dados");
}
catch(ClassNotFoundException Driver)
{
JOptionPane.showMessageDialog(null, "Driver nao localizado: "+driver);
result = false;
}
catch(SQLException Fonte)
{
JOptionPane.showMessageDialog(null, "Deu erro na conexão "+
"com a fonte de dados"+Fonte);
result = false;
}
return result;
}
public void desconecta()
{
boolean result = true;
try
{
conexao.close();
JOptionPane.showMessageDialog(null, "Banco Fechado");
}
catch(SQLException Fonte)
{
JOptionPane.showMessageDialog(null, "Não foi possivel fechar o banco de dados");
result = false;
}
}
public void executeSQL(String sql)
{
try
{
statement = conexao.createStatement();
resultset = statement.executeQuery(sql);
}
catch(SQLException sqlex)
{
JOptionPane.showMessageDialog(null, "Não foi possivel "+
"executar o comando SQL"+sqlex);
}
}
}
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:
[quote]
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. [/quote]
Se resolver por favor poste qual foi o procedimento.
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.
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?