Terminei meu programa.. E agora?

5 respostas
Deybson_10
Galera.

Fiz um programa de mercado. No netbens , dentro do netbens tem um banco de dados derby: eu criei um banco la dentro

-eu queria rodar esse programa em outras maquinas, o que é preciso?

Meu programa esta pronto ( somente no meu computador)

-se eu gerar o jar dele, ele nao salva o banco de dados . Entao. O q eu faco??

Help;

5 Respostas

igor_ks

Salva os dados em um banco real (MySQL, Postgres, Oracle), ao inves de banco em memória.

Satangozo

Seguinte amigo, o derby usa uma instancia da JVM para poder funcionar, pensando dessa forma existem 3 maneiras de usar seu banco de dados:

1 - Seu programa acessando o banco na rede (modo cliente)
2 - Seu programa servindo outras máquinas na rede (modo servidor)
3 - Seu programa levando consigo o banco e sendo o unico a acessar (modo embarcado)

Me corrija caso eu esteja errado, mas eu imagino que você queira distribuir sua aplicação e mandar o banco de dados junto, sendo assim, vou assumir que você quer o modo embarcado.

Primeiramente vou explicar porque o seu programa só funciona com o Netbeans aberto nesse momento… Quando você vai no Netbeans e inicia o banco de dados por ele, o próprio netbeans inicia o servidor apache derby então o endereço “jdbc:derby//localhost:1527/seuBanco” fica disponivel, ou seja, ele usa uma instancia da JVM pra isso, e portanto, quando você fecha o Netbeans ele consequentemente também fecha a instancia da JVM e derruba seu banco de dados.

A solução para que você distribua sua aplicação junto com o banco é assim que iniciar o programa fazer com que ele use a propria instancia da JVM para iniciar o servidor apache derby, ou seja, sempre que seu programa estiver aberto seu banco vai estar online, e sempre que estiver fechado seu banco vai estar offline.

Legal! e como fazer isso?

Primeiro, é necessário que você tenha as bibliotecas do derby no seu programa, veja se na biblioteca tem adicionado os jars: “derbyNet.jar”, “derby.jar”, e “derbyClient.jar”.

Segundo, eu aconselho a iniciar o banco antes de qualquer transação com o banco (afinal ele tem que estar online pra isso =D), então geralmente escolho colocar o código que inicia o derby na minha fábrica de conexões, mas você pode colocar também na inicialização do seu programa, e para isso use o seguinte método:

private void iniciaServidor(String ip, String caminhoBanco) { try { //Seta a variável DERBY_HOME para o local que ficarão os bancos de dados File file = new File(caminhoBanco); System.setProperty("derby.system.home", file.getAbsolutePath()); //cria o objeto de controle do servidor //libera todos os acessos-> InetAddress.getByName("0.0.0.0"), 1527 //libera só acesso externo -> InetAddress.getByName("192.168.25.100"), 1527 //vazio só libera localhost NetworkServerControlImpl server = new NetworkServerControlImpl(InetAddress.getByName(ip), 1527); //inicia o servidor server.start(new PrintWriter(System.out)); } catch (Exception ex) { System.out.println(ex); } }

o parametro “ip” é quem define que tipo de conexões seu servidor vai aceitar, e o parametro “caminhoBanco” é o caminho onde fica a pasta que contém seu banco de dados no seu computador, eu aconselho você criar uma pasta chamada “database” na mesma pasta onde está seu executavel, e copiar os arquivos do seu banco de dados pra ela, assim você pode passar para o parametro “caminhoBanco” a String “database” que vai funcionar.

Me perdoe o livro, mas espero que tenha ajudado.

Deybson_10

eu acho que estou quase conseguindo!, mas não deu certo kkk
eu devo estar colocando alguma coisa errada , ><
meu IP ou o caminho, nao sei, vou tentar mais, mas agradeço!

Satangozo

Posta seu arquivo que faz a conexão com o banco que se der eu modifico para você…

Deybson_10

Eu acho q é este: kk
C:\document and settings\usuario.netbeans-derby\zcliente

O banco de dados fica salvo nesse caminho

Criado 5 de julho de 2016
Ultima resposta 7 de jul. de 2016
Respostas 5
Participantes 3