Distribuir um projeto com banco de dados

14 respostas
D

Olá pessoal,

Sou iniciante em Java.

Fiz um pequeno projeto em java que acessa um banco de dados access.

Como faço para distribuí-lo ?

14 Respostas

jaboot

Compila, gera o jar e manda pra quem você quiser.

D

Como a pessoa que receber deve configurar o arquivo access ?

InicianteJavaHenriqu

O usuário final não deve configurar o arquivo access (bd), ele irá usar seu sistema (.jar) e este acessa o bd.

flw :thumbup:

D

Fiz alguns testes em outras máquinas, mas os botões ficaram sem ações. Só funcionou na minha. Basta o arquivo JAR na máquina do usuário ? O banco access não precisa ser configurado ?

InicianteJavaHenriqu

Não.

Não.

Seu arquivo JAR que precisa.

Possíveis causas:

Se vc tiver definido que sua string de conexão de acessar o bd (arquivo access) em (por exemplo): C:\Documents and Settings\Doumen só vai funcionar no seu PC mesmo :smiley:

Se “em outras máquinas” não tiver instalado o Microsoft Office Access tbm não vai funcionar :smiley:

doravan

Rapaz, procure uma solução mais confiável:
SQLite, Firebird Embeded são bancos bem mais sólidos, seguros e confiáveis do que o access, e tudo o que você precisa é só de uma DLL de 2mb de tamanho.

D

Eu fiz a conexão assim:

public class Db {

Connection con;
Statement st;
ResultSet rs;

public Db() {

    connect();

}

public void connect() {
    try {
        String driver = "sun.jdbc.odbc.JdbcOdbcDriver";
        Class.forName(driver);

        String db = "jdbc:odbc:db1";

        con = DriverManager.getConnection(db);

        st = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);

        String sql = "select * from Tabela1";

        rs = st.executeQuery(sql);

       } catch (Exception ex) {
        ex.printStackTrace();
    }
}

public static void main(String[] args) {
    new Db();
    new Gui();
    
}

}

Eu testei numa outra máquina que tinha a mesma versão do access que na minha.

Se utilizar outro banco, qual arquivo devo baixar de 2mb ? E o que mais devo fazer na outra máquina ?

InicianteJavaHenriqu

Caso vc escolha o MySQL e use NetBeans:

No seu projeto clique com o botão direito do mouse em Bibliotecas :arrow: Adicionar biblioteca :arrow: MySQL JDBC Driver :arrow: Adicionar biblioteca

vc pode fazer isto :arrow: http://www.guj.com.br/java/262896-resolvido-como-criar-um-instalador-a-partir-de-um-arquivo-jar-no-netbeans

Mas lembre-se vc terá que ter um conhecimento prévio e básico sobre MySQL

flw :thumbup:

wbdsjunior
Doumen:
...
            String driver = "sun.jdbc.odbc.JdbcOdbcDriver";
            Class.forName(driver);

            String db = "jdbc:odbc:db1";

            con = DriverManager.getConnection(db);
...
}
desta forma o usuário terá que configurar a fonte de dados ODBC.

uma outra forma de fazer isso é colocar o arquivo num diretório do seu projeto e apontar a url de conexão para ele.

[url]http://social.msdn.microsoft.com/Forums/en-US/visualjsharpgeneral/thread/21ebec84-8bfe-41a7-868f-369aef1cb148[/url]

D

Interessante a sua dica wbdsjunior, mas na classe MyConnection:

class MyConnection

{

public static Connection getConnection() throws Exception {

Driver d = (Driver)Class.forName

(“sun.jdbc.odbc.JdbcOdbcDriver”).newInstance();

Connection c = DriverManager.getConnection(

“jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, <em>.accdb)};DBQ=</em>.accdb”

);

return c;

}

Mas eu não entendi como faço a conexão com o arquivo access específico ? (No meu caso o arquivo db1.)

wbdsjunior

Doumen:
Interessante a sua dica wbdsjunior, mas na classe MyConnection:

class MyConnection

{

public static Connection getConnection() throws Exception {

Driver d = (Driver)Class.forName

(“sun.jdbc.odbc.JdbcOdbcDriver”).newInstance();

Connection c = DriverManager.getConnection(

“jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, <em>.accdb)};DBQ=</em>.accdb”

);

return c;

}

Mas eu não entendi como faço a conexão com o arquivo access específico ? (No meu caso o arquivo db1.)

creio que assim:

Connection c = DriverManager.getConnection("jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=path/file.mdb");
ksmarini

Cara, eu tava encucado com usar o access pelo motivo de não precisar instalar um banco de dados em todas as máquinas que eu fosse utilizar, neste caso bastaria copiar o arquivo jar e o arquivo mdb. só que tive tanta dor de cabeça em fazer esse acesso que procurei uma solução alternativa.
Usei isso.
http://www.feras-odeh.com/java/h2_embeded_database_java/

Bem explicado e usa um banco de dados embarcado. super simples de usar.

agora abandonei o access de vez. :lol:

D

Obrigado pela dica ksmarini,

Tentei usar a sua dica mas não consegui compilar o código.

Não entendo essa maneira de usar String dbUrl = &;amp;quot;jdbc:h2:data/school&amp;quot;; que aparece no código mas o meu netbeans não aceita a compilação. Estou tentando apenas fazer um aplicativo para desktop (ainda não sei nada de web).

Obrigado pela dica e desculpe a ignorância.

D

Olá a todos,

Obrigado pelas dicas.

Vi um tutorial para usar o java DB, está muito bem feito: http://www.youtube.com/watch?v=D5TkdXSRzsM

Mas não sei como distribuí-lo. O Netbeans gerou uma pasta dist na pasta do projeto.

Eu “zipei” esta pasta e mandei para uma usuária. Esta descompactou a pasta no Desktop.

Pedi para ela executar o Arquivo.jar pela linha de comando do cmd com java -jar Arquivo.jar e ela obteve como resultado:

C:\Documents and Settings\lilian.martins\Desktop\Dist>java -jar DesktopApplicati

on1.jar

[TopLink Info]: 2012.02.15 04:10:47.536ServerSession(24093812)TopLink, versi

on: Oracle TopLink Essentials - 2.0.1 (Build b09d-fcs (12/06/2007))

15/02/2012 16:10:48 org.jdesktop.application.Application$1 run

GRAVE: Application class desktopapplication1.DesktopApplication1 failed to launc

h

Local Exception Stack:

Exception [TOPLINK-4002] (Oracle TopLink Essentials - 2.0.1 (Build b09d-fcs (12/

06/2007))): oracle.toplink.essentials.exceptions.DatabaseException

Internal Exception: java.sql.SQLNonTransientConnectionException: java.net.Connec

tException : Erro ao conectar no servidor localhost porta 1527. Recebida a m

ensagem: Connection refused: connect.

Error Code: 40000

at oracle.toplink.essentials.exceptions.DatabaseException.sqlException(D

atabaseException.java:305)

at oracle.toplink.essentials.sessions.DefaultConnector.connect(DefaultCo

nnector.java:102)

at oracle.toplink.essentials.sessions.DatasourceLogin.connectToDatasourc

e(DatasourceLogin.java:184)

at oracle.toplink.essentials.internal.sessions.DatabaseSessionImpl.login

AndDetectDatasource(DatabaseSessionImpl.java:582)

at oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider.login

(EntityManagerFactoryProvider.java:280)

at <a href="http://oracle.toplink.essentials.internal.ejb.cmp3.EntityManagerSetupImpl.de">oracle.toplink.essentials.internal.ejb.cmp3.EntityManagerSetupImpl.de</a>

ploy(EntityManagerSetupImpl.java:229)

at oracle.toplink.essentials.internal.ejb.cmp3.base.EntityManagerFactory

Impl.getServerSession(EntityManagerFactoryImpl.java:93)

at oracle.toplink.essentials.internal.ejb.cmp3.base.EntityManagerFactory

Impl.createEntityManagerImpl(EntityManagerFactoryImpl.java:126)

at oracle.toplink.essentials.internal.ejb.cmp3.base.EntityManagerFactory

Impl.createEntityManagerImpl(EntityManagerFactoryImpl.java:120)

at oracle.toplink.essentials.internal.ejb.cmp3.EntityManagerFactoryImpl.

createEntityManager(EntityManagerFactoryImpl.java:91)

at desktopapplication1.DesktopApplication1View.initComponents(DesktopApp

lication1View.java:285)

at desktopapplication1.DesktopApplication1View.(DesktopApplication

1View.java:36)

at desktopapplication1.DesktopApplication1.startup(DesktopApplication1.j

ava:19)

at org.jdesktop.application.Application$1.run(Application.java:171)

at java.awt.event.InvocationEvent.dispatch(Unknown Source)

at java.awt.EventQueue.dispatchEventImpl(Unknown Source)

at java.awt.EventQueue.access$000(Unknown Source)

at java.awt.EventQueue$1.run(Unknown Source)

at java.awt.EventQueue$1.run(Unknown Source)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown

Source)

at java.awt.EventQueue.dispatchEvent(Unknown Source)

at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)

at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)

at java.awt.EventDispatchThread.pumpEvents(Unknown Source)

at java.awt.EventDispatchThread.pumpEvents(Unknown Source)

at java.awt.EventDispatchThread.run(Unknown Source)

Caused by: java.sql.SQLNonTransientConnectionException: java.net.ConnectExceptio

n : Erro ao conectar no servidor localhost porta 1527. Recebida a mensagem:

Connection refused: connect.

at org.apache.derby.client.am.SQLExceptionFactory40.getSQLException(Unkn

own Source)

at org.apache.derby.client.am.SqlException.getSQLException(Unknown Sourc

e)

at org.apache.derby.jdbc.ClientDriver.connect(Unknown Source)

at java.sql.DriverManager.getConnection(Unknown Source)

at java.sql.DriverManager.getConnection(Unknown Source)

at oracle.toplink.essentials.sessions.DefaultConnector.connect(DefaultCo

nnector.java:100)

 26 more

Caused by: org.apache.derby.client.am.DisconnectException: java.net.ConnectExcep

tion : Erro ao conectar no servidor localhost porta 1527. Recebida a mensage

m: Connection refused: connect.

at org.apache.derby.client.net.NetAgent.(Unknown Source)

at org.apache.derby.client.net.NetConnection.newAgent_(Unknown Source)

at org.apache.derby.client.am.Connection.(Unknown Source)

at org.apache.derby.client.net.NetConnection.(Unknown Source)

at org.apache.derby.client.net.NetConnection40.(Unknown Source)

at org.apache.derby.client.net.ClientJDBCObjectFactoryImpl40.newNetConne

ction(Unknown Source)

 30 more

Caused by: java.net.ConnectException: Connection refused: connect

at java.net.PlainSocketImpl.socketConnect(Native Method)

at java.net.PlainSocketImpl.doConnect(Unknown Source)

at java.net.PlainSocketImpl.connectToAddress(Unknown Source)

at java.net.PlainSocketImpl.connect(Unknown Source)

at java.net.SocksSocketImpl.connect(Unknown Source)

at java.net.Socket.connect(Unknown Source)

at java.net.Socket.connect(Unknown Source)

at java.net.Socket.(Unknown Source)

at java.net.Socket.(Unknown Source)

at javax.net.DefaultSocketFactory.createSocket(Unknown Source)

at org.apache.derby.client.net.OpenSocketAction.run(Unknown Source)

at java.security.AccessController.doPrivileged(Native Method)

 36 more

Exception in thread AWT-EventQueue-0 java.lang.Error: Application class deskto

papplication1.DesktopApplication1 failed to launch

at org.jdesktop.application.Application$1.run(Application.java:177)

at java.awt.event.InvocationEvent.dispatch(Unknown Source)

at java.awt.EventQueue.dispatchEventImpl(Unknown Source)

at java.awt.EventQueue.access$000(Unknown Source)

at java.awt.EventQueue$1.run(Unknown Source)

at java.awt.EventQueue$1.run(Unknown Source)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown

Source)

at java.awt.EventQueue.dispatchEvent(Unknown Source)

at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)

at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)

at java.awt.EventDispatchThread.pumpEvents(Unknown Source)

at java.awt.EventDispatchThread.pumpEvents(Unknown Source)

at java.awt.EventDispatchThread.run(Unknown Source)

Caused by: Exception [TOPLINK-4002] (Oracle TopLink Essentials - 2.0.1 (Build b0

9d-fcs (12/06/2007))): oracle.toplink.essentials.exceptions.DatabaseException

Internal Exception: java.sql.SQLNonTransientConnectionException: java.net.Connec

tException : Erro ao conectar no servidor localhost porta 1527. Recebida a m

ensagem: Connection refused: connect.

Error Code: 40000

at oracle.toplink.essentials.exceptions.DatabaseException.sqlException(D

atabaseException.java:305)

at oracle.toplink.essentials.sessions.DefaultConnector.connect(DefaultCo

nnector.java:102)

at oracle.toplink.essentials.sessions.DatasourceLogin.connectToDatasourc

e(DatasourceLogin.java:184)

at oracle.toplink.essentials.internal.sessions.DatabaseSessionImpl.login

AndDetectDatasource(DatabaseSessionImpl.java:582)

at oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider.login

(EntityManagerFactoryProvider.java:280)

at <a href="http://oracle.toplink.essentials.internal.ejb.cmp3.EntityManagerSetupImpl.de">oracle.toplink.essentials.internal.ejb.cmp3.EntityManagerSetupImpl.de</a>

ploy(EntityManagerSetupImpl.java:229)

at oracle.toplink.essentials.internal.ejb.cmp3.base.EntityManagerFactory

Impl.getServerSession(EntityManagerFactoryImpl.java:93)

at oracle.toplink.essentials.internal.ejb.cmp3.base.EntityManagerFactory

Impl.createEntityManagerImpl(EntityManagerFactoryImpl.java:126)

at oracle.toplink.essentials.internal.ejb.cmp3.base.EntityManagerFactory

Impl.createEntityManagerImpl(EntityManagerFactoryImpl.java:120)

at oracle.toplink.essentials.internal.ejb.cmp3.EntityManagerFactoryImpl.

createEntityManager(EntityManagerFactoryImpl.java:91)

at desktopapplication1.DesktopApplication1View.initComponents(DesktopApp

lication1View.java:285)

at desktopapplication1.DesktopApplication1View.(DesktopApplication

1View.java:36)

at desktopapplication1.DesktopApplication1.startup(DesktopApplication1.j

ava:19)

at org.jdesktop.application.Application$1.run(Application.java:171)

 14 more

Caused by: java.sql.SQLNonTransientConnectionException: java.net.ConnectExceptio

n : Erro ao conectar no servidor localhost porta 1527. Recebida a mensagem:

Connection refused: connect.

at org.apache.derby.client.am.SQLExceptionFactory40.getSQLException(Unkn

own Source)

at org.apache.derby.client.am.SqlException.getSQLException(Unknown Sourc

e)

at org.apache.derby.jdbc.ClientDriver.connect(Unknown Source)

at java.sql.DriverManager.getConnection(Unknown Source)

at java.sql.DriverManager.getConnection(Unknown Source)

at oracle.toplink.essentials.sessions.DefaultConnector.connect(DefaultCo

nnector.java:100)

 26 more

Caused by: org.apache.derby.client.am.DisconnectException: java.net.ConnectExcep

tion : Erro ao conectar no servidor localhost porta 1527. Recebida a mensage

m: Connection refused: connect.

at org.apache.derby.client.net.NetAgent.(Unknown Source)

at org.apache.derby.client.net.NetConnection.newAgent_(Unknown Source)

at org.apache.derby.client.am.Connection.(Unknown Source)

at org.apache.derby.client.net.NetConnection.(Unknown Source)

at org.apache.derby.client.net.NetConnection40.(Unknown Source)

at org.apache.derby.client.net.ClientJDBCObjectFactoryImpl40.newNetConne

ction(Unknown Source)

 30 more

Caused by: java.net.ConnectException: Connection refused: connect

at java.net.PlainSocketImpl.socketConnect(Native Method)

at java.net.PlainSocketImpl.doConnect(Unknown Source)

at java.net.PlainSocketImpl.connectToAddress(Unknown Source)

at java.net.PlainSocketImpl.connect(Unknown Source)

at java.net.SocksSocketImpl.connect(Unknown Source)

at java.net.Socket.connect(Unknown Source)

at java.net.Socket.connect(Unknown Source)

at java.net.Socket.(Unknown Source)

at java.net.Socket.(Unknown Source)

at javax.net.DefaultSocketFactory.createSocket(Unknown Source)

at org.apache.derby.client.net.OpenSocketAction.run(Unknown Source)

at java.security.AccessController.doPrivileged(Native Method)

 36 more

C:\Documents and Settings\lilian.martins\Desktop\Dist>

Alguém sabe como resolver isso ?

Criado 9 de fevereiro de 2012
Ultima resposta 15 de fev. de 2012
Respostas 14
Participantes 6