Duvida: Como faço para corrigir o erro com o BD?

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:

package utilitarios;

import java.sql.*;
import javax.swing.JOptionPane;

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

}

Acredito que o erro esteja nesta linha:

final private String url = “jdbc:odbc:BD”;

tem certeza que ela está correta??

você está tentando conectar via ODBC?
Que banco está usando?

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.

Se resolver posta ae.

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?

aguardo.

Obrigado pela ajuda, o código ficou assim:

package utilitarios;

import java.sql.*;
import javax.swing.JOptionPane;
/**
 *
 * @author Lucas
 */
public class conexao 
{
        final private String driver = "org.gjt.mm.mysql.Driver";
        final private String url = "jdbc:mysql://localhost/anabd";
        final private String usuario = "root";
        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);
            }
        }
}