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 ?
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 ?
Compila, gera o jar e manda pra quem você quiser.
Como a pessoa que receber deve configurar o arquivo access ?
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:
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 ?
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 
Se “em outras máquinas” não tiver instalado o Microsoft Office Access tbm não vai funcionar 
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.
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 ?
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:
desta forma o usuário terá que configurar a fonte de dados ODBC.... String driver = "sun.jdbc.odbc.JdbcOdbcDriver"; Class.forName(driver); String db = "jdbc:odbc:db1"; con = DriverManager.getConnection(db); ... }
uma outra forma de fazer isso é colocar o arquivo num diretório do seu projeto e apontar a url de conexão para ele.
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.)
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");
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:
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&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.
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.536–ServerSession(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 ?