JAR não reconhece o Banco de dados

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:

[code]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());
          }
    }[/code] 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 ?

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

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

Valeu drsmachado :thumbup:

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.

É hsqldb, derby, até firebird…

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.

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.

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.

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.

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:[code]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());
          }
    }[/code] Só coloquei o mdb dentro da pasta lib e está funcionando.

Obrigado a todos.

[quote=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.[/quote]

Aldeir, eu fiz assim:

Criei uma classe chamada ConnectionFactory.

[code]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());
          }
    }

}[/code]E quando quero vou buscar algo no banco, eu faço assim: [code]
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);
    }[/code] Até agora, funcionou numa boa.

Valeu,
obrigado pela resposta.

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:

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

Valeu drsmachado :thumbup: [/quote]

[quote=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:

[code]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());
          }
    }[/code] 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 ?
[/quote]

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