JAR não reconhece o Banco de dados

14 respostas
rossijr10

Bom dia pessoal.

Criei uma aplicação, com Netbeans, e quando gero o .jar, ele não lê o banco de dados. Como não tenho outro banco, estou usando o MS Access. Estou fazendo uma "conexão direta", sem configurar o ODBC (Fonte de dados) do windows. A conexão é feita assim:
public static Connection getConnection() throws SQLException, InstantiationException, IllegalAccessException {

              try {
                  Driver d = (Driver) Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
                  return DriverManager.getConnection("jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ= src/database/database.mdb","","");
                    
              } catch (ClassNotFoundException e) {
                     throw new SQLException(e.getMessage());
              }
        }
Quando estou executando a aplicação via Netbeans, funciona corretamente. Porém, ao gerar .jar e executá-lo, aparece a seguinte mensagem:
java.sql.SQLException: [Microsoft][Driver ODBC para Microsoft Access] '(desconhecido)' não é um caminho válido. Certifique-se de que o nome do caminho esteja escrito corretamente e que você esteja conectado ao servidor no qual o arquivo reside.
Poderiam me auxiliar ?

14 Respostas

drsmachado

Sinceramente, visite http://dev.mysql.com/downloads/ e baixe um banco de dados de verdade.
Access sucks!

rossijr10

:?
Eu até gosto do access, mas de tanto ouvir falar mau dele, vou mudar.

Valeu drsmachado :thumbup:

A

Todo chinelo velho encontra seu pé torto… Trabalhei bons anos com Access e para o que fiz sempre me atendeu. Depende muito do que você quer fazer. Se estiver procurando um banco pequeno, que dispense instalação e já possa ser distribuído junto com sua aplicação… nem o MySql é a melhor opção!! Se for este o caso uma das alternativas possíveis é o HSQLDB.

drsmachado

É hsqldb, derby, até firebird…

C

Aqui na empresa onde trabalho fizemos alguns testes com o H2 http://www.h2database.com/html/main.html, por enquanto esta atendendo as funcionalidades, é uma boa alternativa ao HSQLDB.

S

Tem como me ajudar!!!

Sou novato na linguagem java e gostaria de um força para criar um acesso de pessoas em cod. de barra mas que limite alguns acesso em determinadas salas com elitor de cod. de barra . e utilizar o my sql e a melhor escolha para bd ? e como modo ele no eclipse?

Desde já agradeço pela força.

Aldeir

Pelo que conheço de Java com Access, não dá pra fazer “ligação direta”, sem configurar o ODBC.
Se você encontrar, posta aqui porque eu desconheço.

Aldeir

Se você quer utilizar um banco de dados embarcado em sua aplicação, aconselho a utilizar o SQLite é bem melhor que o Access, se é que podemos chamar o Access de banco de dados.

rossijr10

Boa tarde galera.

Primeiramente, obrigado pelas dicas. Eu percebi que, sempre que gero o .jar, ele cria, também, uma pasta chamada lib. Então, o que fiz foi alterar o código dessa maneira:
public static Connection getConnection() throws SQLException, InstantiationException, IllegalAccessException {

              try {
                  Driver d = (Driver) Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
                  return DriverManager.getConnection("jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ= lib/database.mdb","","");
                    
              } catch (ClassNotFoundException e) {
                     throw new SQLException(e.getMessage());
              }
        }
Só coloquei o mdb dentro da pasta lib e está funcionando.

Obrigado a todos.

rossijr10
Aldeir:
Pelo que conheço de Java com Access, não dá pra fazer "ligação direta", sem configurar o ODBC. Se você encontrar, posta aqui porque eu desconheço.

Aldeir, eu fiz assim:

Criei uma classe chamada ConnectionFactory.
package classes;

import java.sql.*;

public class ConnectionFactory {

    public static Connection getConnection() throws SQLException, InstantiationException, IllegalAccessException {

              try {
                  Driver d = (Driver) Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
                  return DriverManager.getConnection("jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ= src/database/database.mdb","","");
                    
              } catch (ClassNotFoundException e) {
                     throw new SQLException(e.getMessage());
              }
        }

}
E quando quero vou buscar algo no banco, eu faço assim:
import classes.ConnectionFactory;

      try {
            Connection con = ConnectionFactory.getConnection();
            Statement st = con.createStatement();
            ResultSet rs = st.executeQuery("select * from tabela");
            while ( rs.next() ){

            } 
              con.close();
        }catch (SQLException ex ){
            Logger.getLogger(editcontact.class.getName()).log(Level.SEVERE, null, ex);
        }
Até agora, funcionou numa boa.
Aldeir

Valeu,
obrigado pela resposta.

ksmarini

puxa vida rossijr10, até esses dias eu estava fazendo todo o banco de dados de novo só porque não achei uma resposta tão simples sobre access como a sua. Valew mesmo. rs
Fiz tudo de novo no Mysql, mas nem precisa. Era um controle muito bobo pra tanto trabalho. Mas é assim mesmo. vivendo e aprendendo. :smiley:

alexandre.marques

rossijr10:
:?
Eu até gosto do access, mas de tanto ouvir falar mau dele, vou mudar.

Valeu drsmachado :thumbup:

X
rossijr10:
Bom dia pessoal. Criei uma aplicação, com Netbeans, e quando gero o .jar, ele não lê o banco de dados. Como não tenho outro banco, estou usando o MS Access. Estou fazendo uma "conexão direta", sem configurar o ODBC (Fonte de dados) do windows. A conexão é feita assim:
public static Connection getConnection() throws SQLException, InstantiationException, IllegalAccessException {

              try {
                  Driver d = (Driver) Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
                  return DriverManager.getConnection("jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ= src/database/database.mdb","","");
                    
              } catch (ClassNotFoundException e) {
                     throw new SQLException(e.getMessage());
              }
        }
Quando estou executando a aplicação via Netbeans, funciona corretamente. Porém, ao gerar .jar e executá-lo, aparece a seguinte mensagem:
java.sql.SQLException: [Microsoft][Driver ODBC para Microsoft Access] '(desconhecido)' não é um caminho válido. Certifique-se de que o nome do caminho esteja escrito corretamente e que você esteja conectado ao servidor no qual o arquivo reside.
Poderiam me auxiliar ?

Não sei se seu problema é esse, mais....
Quando se usa BD + Java ao importa para .jar vai gerar um arquivo .jar e uma pasta com informações do BD, esses 2 tem que está no mesmo lugar senão nunca vai presta...OK

Criado 27 de dezembro de 2011
Ultima resposta 28 de dez. de 2011
Respostas 14
Participantes 9