Como "linkar" com Access 2010

20 respostas
F

Pessoal preciso de ajuda!!!
Não sei linkar o access 2010 com java, alguem poderia me ajudar?
PS: Não sei nem como começar. :oops:

Desde já obrigado pela ajuda.

20 Respostas

fabiozoroastro

Marcon,

Digitei isso no google e achei vários links úteis pra você.

Esse está dentro do primeiro link retornado.

JoatanGuj

Você Precisa criar primeiramente uma Fonte de Dados ODBC nas Ferramentas Administrativas do seu PC. ok Vamos lá
Vá em Painel de Controle>Sistema e Segurança(Para Win 7) >Ferramentas administrativas. no Xp é Apenas Painel de controle > Ferramentas Administrativas(Eu acho :D).
Bom , Depois de Ir em ferramentas administrativas clique em Fonte de Dados ODBC, clique em Adicionar coloque um nome e o caminho do banco de dados. por exemplo:
Nome do Banco é Clientes, ponhe Clientes lá(não é obrigado estar com o mesmo nome, mais facilita sua vida na hora de lembrar XD, coloque oque quiser ^^).
ok você ja configurou seu banco de dados pra ser reconhecido na classe de conexão.
Classe de Conexão com Access(vou te passar do meu jeito, mais não é a unica forma de se fazer). eu costumo criar uma classe que será instanciada em todo projeto. se não a cada vez
que você necessitar de acessar seu banco de dados você terá que digitar a mesma coisa que estará digitado na classe principal de conexão. fica à seu critério.

Crie uma nove classe e ponha o nome conexaoAccess ou algo que tu queira colocar, fica à teu critério.

Criou a classe tu verá isso:

/**
 *
 * @author Joatan
 */
public class conexaoAccess {
    
}

vamos em partes, tem gente que gosta de criar variáveis com os parametros e depois setar os parametros como driver, url , usuario e senha. eu sou um deles. :lol:

bem tae a classe que você pediu.espero que te ajude.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;


/**
 *
 * @author Joatan
 */
public class conexaoAccess {
    final private String DRIVER = "sun.jdbc.odbc.JdbcOdbcDriver";
    final private String URL = "jdbc:odbc:(NOME DO SEU BANCO LA DA FONTE DE DADOS ODBC)"; //<< Atenção :D
    final private String USUARIO = ""; //< Caso tenha configurado Usuario, se não tiver deixe em branco.
    final private String SENHA = "";//< Caso tenha configurado Senha, se não tiver deixe em branco.
    private Connection con; 
    public Statement st;
    ResultSet rs;
    
    public void conectarAccess(){ // você poderia ultilizar metodos do outros tipo tambem , não é necessário ser um void.
        try{// toda vez que for tratar de banco de dados é necessário ultilizar de try catch.
            Class.forName(DRIVER);
            con = DriverManager.getConnection(URL,USUARIO,SENHA);
        }catch(SQLException ex){
            ex.printStackTrace();
        }catch(ClassNotFoundException ex2){
            ex2.printStackTrace();
        }
        
    }
     public void desconectarAccess(){ //Nunca deixa seu DB aberto. sempre depois de usa-lo feche-o
        try {
            con.close();
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
     }

     public void executarQuery(String query){ //necessita de um parametro , no caso a query, por exemplo: (SELECT * FROM seubanco) esse metodo facilita um pouco sua vida.
         try{
    st = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
    rs = st.executeQuery(query);
         }catch(SQLException e){
             e.printStackTrace();
         }
     }
}
F

Agora a minha duvida é onde criar o “clientes” - dito acima? :frowning:

JoatanGuj

F_Marcon:
Agora a minha duvida é onde criar o “clientes” - dito acima? :frowning:


Bom o Clientes você cria no Access mesmo.
vai no access > novo banco> ponhe o nome que você quiser no caso “Clientes” e lá voc~e cria as tabelas e os campos.
dai é só salvar e mover ele pra pasta do seu projeto e depois configurar ele nas variaveis de ambiente como eu ensinei la encima.

Qualquer coisa pode perguntar.

F

Desculpe - me pela pergunta mal feita acima, gostaria de saber onde criar o “CLIENTES” Joatan mencionou em sua resposta.
Se na aba “Fonte de dados de usuario”, “Fonte de dados de sistemas” ou “Fonte de dados de arquivos”.

De novo ja agradecendo pela ajuda.

JoatanGuj

Fonte de dados do Usuário > Driver do Microsoft Access (*.mdb) > Concluir.
em Nome da fonte de dados ponha o nome que vai entrar la naquela variavel url: exemplo de nome: “Clientes” e ele entra aqui:

private String url = "jdbc:odbc:Clientes";

em Banco de dados clique em Selecionar e mostra onde o seu banco esta , apos isso só clicar em OK,

qualquer coisa pergunte ^^

A

Não é necessário nenhum arquivo JAR para isso? ou nenhuma inserção de algum tipo de biblioteca.

Fiz exatamente como você disse, inclusive eu chamei no método princiipal o médodo “testaConexão” e não funcionou.

Tem certeza que é somente isso que deve ser feito para conectar ao Access?

Obrigado.

Att.

JoatanGuj

sim , apenas isso. me mande seu codigo. da forma que você fez e eu posso analizar. ver se o erro ta nele ou sei la onde
configurou a fonte de dados ODBC?

A

JoatanGuj,

Consegui conectar aqui, muito tranquilo.

O que eu não consegui foi executar uam query, não entendi muito bem seu método. Uma dúvida, se eu usar o mesmo procesidmento pra executarUmaQuery no “postgresql”, dará no mesmo?

Att.

JoatanGuj

sim pois SQL é uma Linguagem.

pra executar uma QUery com meu metodo basta por

new Conexao(Nome da sua classe) con = new Conexao();
con.executaSql("SELECT * FROM Clientes"); <<< apenas um exemplo
A

JoaranGUJ,

Excelentes suas explicações, deu tudo certo aqui, muito obrigado.

Att.

JoatanGuj

alPires:
JoaranGUJ,

Excelentes suas explicações, deu tudo certo aqui, muito obrigado.

Att.

precisar estamos aqui.

A

Cara,

Pra eu retornar um único valor de uma consulta, tipo “SELECT * FROM USUARIO”, ou seja, se eu quiser retornar o último valor da coluna “MATRÍCULA”, eu teria que utilizar o ResultSetMetaData?

Porque eu não to conseguindo utilizar e nem retornar os dados do SQL (Access).

Alguém pode me ajudar como se faz isso ou como funciona?

Obrigado.

Att.

JoatanGuj

alPires:
Cara,

Pra eu retornar um único valor de uma consulta, tipo “SELECT * FROM USUARIO”, ou seja, se eu quiser retornar o último valor da coluna “MATRÍCULA”, eu teria que utilizar o ResultSetMetaData?

Porque eu não to conseguindo utilizar e nem retornar os dados do SQL (Access).

Alguém pode me ajudar como se faz isso ou como funciona?

Obrigado.

Att.

ultiliza o codigo do registro dessa forma : diagamos que o ultimo registro tem como codigo = 23 ok ao trabalho:

con.executaSql("SELECT MATRICULA FROM USUARIO WHERE CODIGO = 23");

ou então use

con.resultset.last();
ViniGodoy

F_Marcon, por favor, abra dúvidas sobre banco de dados no fórum de persistência.
Leia com atenção a descrição dos fóruns antes de postar.

A

Tudo bem,

Mas tipo, eu quero que esse resultado, “essa única matrícula” seja gravada em uma variável por exemplo…

Porque tipo, executar a consulta tudo bem, mas restorná-la é um poucop mais complicadinho.

Att.

lucasportela
SELECT MAX(MATRICULA) FROM USUARIO
A

Sim,

Sobre o SQL tudo bem, eu me reifro em como vou converter o resultado dessa consulta para uma variável em JAVA, como vou transformar o valor retirado do SQL em algum atributo.

:wink:

A

Pessoal,

Eu queria fazer algo do tipo:

String query = "SELECT MAX(MATRICULA) FROM USUARIO";
rs.executaQuery(query); // GERAR O RESULTADO

JTextField lb = new JTextField(  /* GRAVAR AQUI DENTRO O RESULTADO GERADO (+1) */  );
lb.setEditable(false);

É possível fazer algo assim?

Att.

A

Consegui!

Caso alguém esteja precisando da mesma ajuda, ai segue o código:

public int consultarQuery() {
        String query = "SELECT * FROM VEICULO \n ORDER BY CD_VEICULO";
        int valorMaior = 0;
        try {
            st = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
            rs = st.executeQuery(query);
            while (rs.next()) {
                valorMaior = rs.getInt("CD_VEICULO");
            }
            return valorMaior;
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return 0;
    }

Att.

Criado 8 de setembro de 2011
Ultima resposta 13 de set. de 2011
Respostas 20
Participantes 6