Driver JDBC p/ Access

Pessoal,

Onde encontro um driver JDBC para Microsoft Access? Estou testando uns exemplos numa máquina que soh tem o Access (sux!).

Valeu!
[]'s

A propria api basica de Java já fornece um driver para acessar uma fonte de dados via ODBC. Vc vai apenas precisar configurar uma fonte de dados para o seu arquivo do access e depois acessar a fonte de dados via jdbc odbc. O nome do driver é sun.jdbc.odbc.JdbcOdbcDriver e a url para acessar a fonte de dados é “jdbc:odbc:nome_da_fonte_de_dados”.

Até mais.

Cancao,

Valeu pela ajuda! Vou testar aqui, qualquer coisa eu volto a postar.

[]'s

Deu certo! Valeu a ajuda, Cancao.

Agora, pra eu usar uma base de dados MySQL, preciso instalar o MySQL Connector/J? Tem que fazer mais alguma coisa?

Valeu!
[]'s

caiofilipini, veja esse post:
http://www.guj.com.br/forum/viewtopic.php?t=1325

Vc pode encontrar muito mais informação fazendo uma pesquisa no forum. Na maioria das vezes está resolvendo as minhas duvidas. :smiley:

Até mais.

É só baixar o ConnectorJ (de preferência o 2.0.14, pois já tive problemas com o 3.1), adicionar ao classpath e indicar o nome da classe como abaixo:

Class.forName("com.mysql.jdbc.Driver"); con = DriverManager.getConnection("jdbc:mysql://localhost/historicocontabil", "usuario", "senha");

:wink:

O caso a baixo não seria para mySql?
No caso do access o que eu colocaria na segunda linha?
nas informações de conexao mesmo.
att

Ai vai um exemplo que achei via google, acho que deve te ajudar bastante…

import java.sql.*;

public class AccessJDBCUtil {
    private static final String accessDBURLPrefix = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=";
    private static final String accessDBURLSuffix = ";DriverID=22;READONLY=true}";
    static {
        try {
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        } catch(ClassNotFoundException e) {
            System.err.println("JdbcOdbc Bridge Driver not found!");
            // ABORT ABORT... How? System.exit(1) is not nice from webapp...
        }
    }
    
    /** Creates a Connection to a Access Database */
    public static java.sql.Connection getAccessDBConnection(String filename) throws SQLException {
        filename = filename.replace('\', '/').trim();
        String databaseURL = accessDBURLPrefix + filename + accessDBURLSuffix;
        // System.err.println("Datebase URL: " + databaseURL);
        return DriverManager.getConnection(databaseURL, "", "");
    }  
}

caiofilipini,

Se o seu problema foi solucionado, seria legal você colocar [Resolvido] no título da mensagem.

Abraço!

Estou a testar a conexão com este tipo de BD… mas quando crio o statement da erro

a linha de codigo é a seguinte.

stm = con.createStatement();

da o seguinte erro:
[list]
java.sql.SQLException: The result set type is not supported.
at sun.jdbc.odbc.JdbcOdbcStatement.initialize(JdbcOdbcStatement.java)
at sun.jdbc.odbc.JdbcOdbcConnection.createStatement(JdbcOdbcConnection.java)
at sun.jdbc.odbc.JdbcOdbcConnection.createStatement(JdbcOdbcConnection.java)
[/list]

alguém sabe como devo proceder?

[quote=manao]Estou a testar a conexão com este tipo de BD… mas quando crio o statement da erro

a linha de codigo é a seguinte.

stm = con.createStatement();

da o seguinte erro:
[list]
java.sql.SQLException: The result set type is not supported.
at sun.jdbc.odbc.JdbcOdbcStatement.initialize(JdbcOdbcStatement.java)
at sun.jdbc.odbc.JdbcOdbcConnection.createStatement(JdbcOdbcConnection.java)
at sun.jdbc.odbc.JdbcOdbcConnection.createStatement(JdbcOdbcConnection.java)
[/list]

alguém sabe como devo proceder?[/quote]

Sei: sofrendo. Trabalho com Access e Java com frequencia maior do que eu desejava, e isto realmente vai te acontecer.

Inclusive, já te adianto um outro problema que você vai ter. Veja o código abaixo:

   ResultSet rs = conexao.prepareStatement().executeQuery("select id, nome from pessoas");
   rs.next();
   System.out.println(rs.getString(2));
   System.out.println(rs.getString(2));

Código normal né? Nada pode dar errado. NOT!.
Access só te permite acessar o campo no registro UMA vez. na segunda chamada ele dispara excessões horríveis.

Aqui: eu compartilho parte do meu sofrimento nos links abaixo, neles exponho alguns dos problemas que você deve estar enrentando agora.
http://www.itexto.net/devkico/?cat=23

Mas como via de regra, o que digo é o seguinte: TUDO o que você pensar “ah, é claro que eles implementariam assim, pois em todo lugar é assim”, pense 5 vezes, porque normalmente é falso.

Maldito Access!

Vou migrar a base para outro BD… vc me indica qual??

MySQL, PostgreSQL, Firebird, qualquer coisa.

Até txt é melhor que Access.

Sério, foge desta merda enquanto há tempo. Uma vez os dados lá dentro, sua aplicação fica toda viciada nas inconsistências do driver ODBC desta porcaria.

:evil: estou tirando o access da minha vida… Valeu pelas dicas… estarei seguindo seu blog para mais noticias.

kkkkkk acess sem condicões.
mais hoje é so isso que ensinao nas instituições de aprendizagem !!! ridiculo!

Estou com problemas para realiza a conexão. Não consegui solucionar o problema observando as postagens acima.

o erro: java.sql.SQLException: [Microsoft][ODBC Driver Manager] Nome da fonte de dados n?o encontrado e nenhum driver padr?o especificado

Se alguem puder tirar uma dúvida, é a seguinte:
Em projetos do NetBeans usando outro banco, por exemplo o postgres, eu adiciono um arquivo .jar “postgresql-8.3-603.jdbc3.jar” na pasta de biblioteca do projeto e depois no metodo "Class.forName(); " eu coloco o nome do driver.

Eu acredito que isso terá que ser feito no projeto que eu queira usar um banco do access, mas eu nao acho esse arquivo .jar referente ao access.
Será que é isso mesmo que pode estar faltando, ou no caso do access, esse passo de colocar o .jar na biblioteca do projeto nao é necessário?

Consegui a resposta para as minhas dúvidas e irei postar aqui.

Não precise adicionar nenhum .jar ao projeto para poder fazer a conexao. Meu problema era por estar usando win7 64 bits e estava usando como padrão um jdk de 64bits também, mas o meu Office era de 32bits.
Precisei instalar o jdk de 32bits e alterei a configuração do meu projeto da seguinte maneira:

Cliquei com o botão dieito no projeto - Definir configuração - Personaliazar.
Na nova janela fui em: Categoria - Bibliotecas e cliquei no botão Gerenciar Plataformas.
Depois fui em Adicionar plataformas e informei a pasta “C:\Program Files (x86)\Java\jdk1.7.0_03” refetente ao jdk de 32bits que eu instalei, e cliquei em Fechar.
Ainda na janela das Propriedades do Projeto - Categoria - Bibliotecas, troquei a plataforma java padrão pela plataforma de 32bits que eu criei.

Feito isso foi só chamar o método abaixo para conectar com o banco do Access:

private Connection conectar; public void ConectarAccess() { try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); String filename = "c:\teste\teste.mdb";//caminho do arquivo MDB String database = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ="; database += filename.trim() + ";DriverID=22;READONLY=true}"; conectar = DriverManager.getConnection(database, "", ""); } catch (Exception e) { e.printStackTrace(); } }

Esse método acima eu peguei no GUJ mesmo, é só pesquisar que tem vários.