Dados não atualizados na aplicação  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
Zeed01
Virtual Machine Man

Membro desde: 27/10/2006 16:44:29
Mensagens: 668
Offline

Bom dia Colegas !

Meu problema é o seguinte, tenho uma aplicação swing que acessa um banco de dados MySql, até ai tudo bem.
Só que quando eu tenho a aplicação rodando em duas máquinas e faço uma alteração em algum dado em uma delas não aparece na outra máquina, a menos que eu feche a aplicação e abra de novo !

Alguem sabe o que pode estar errado ?

Pensei que o problema fosse na classe que gera a conexão com o banco... ai vai o código dessa classe:


Caso alguém possa me ajudar ficarei muito agradecido !

Abraços.
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

Se você deu este comando:


isto quer dizer que para efetivar suas alterações você precisa explicitamente dar um "commit" (ou via SQL, ou via método commit da interface Connection - veja a documentação em javadoc: commit
[WWW]
Zeed01
Virtual Machine Man

Membro desde: 27/10/2006 16:44:29
Mensagens: 668
Offline

Bom dia Colegas !


thingol:

Primeiro obrigado pela resposta.
Mas infelizemente eu já estou colocando o comando de commit.
Veja o código de um método que faz atualização de uma tabela:



Obrigado !

Um abraço.
ronybrand
Thread.start()

Membro desde: 28/05/2003 15:54:00
Mensagens: 29
Offline

Você deve fechar o prepared statement e a conexão num finally, assim você garante que na na ficará preso no banco. EX:

...
} finally {
if (stp!= null) {
stp.close();
}
if (conn != null) {
conn.close();
}
}

Rony Brand
SCJP
Zeed01
Virtual Machine Man

Membro desde: 27/10/2006 16:44:29
Mensagens: 668
Offline

Bom dia colegas !

ronybrand:

Concordo que colocar num finally seria mais adequado, já que garante que seja executado sempre.
Mas considerando que não está ocorrendo nenhuma exception, o que vai mudar colocar no finally ou nessa parte:



E eu tenho que fechar a conexão para todo comando enviado ao banco ? Porque ?

Obrigado.

Um abraço.
ronybrand
Thread.start()

Membro desde: 28/05/2003 15:54:00
Mensagens: 29
Offline

Você pode fechar no final de todos os comandos.
O finally é para garantir que na ocorrência de algum erro na fique nada preso no banco, que se aculumar pode excedecer o número máximo de conexões parando a aplicação além de consumir mais recursos

Rony Brand
SCJP
Zeed01
Virtual Machine Man

Membro desde: 27/10/2006 16:44:29
Mensagens: 668
Offline

Boa tarde colegas !

ronybrand:

Então... eu entendi a sua sugestão do finally, mas você acha que isto vai resolver o meu problema inicial ?

Obrigado.

Um abraço.
Zeed01
Virtual Machine Man

Membro desde: 27/10/2006 16:44:29
Mensagens: 668
Offline

Boa tarde colegas !

Tentei seguir a dica de fechar a conexão após os inserts e updates, mas agora estou com outro problema.

Eu tenho a classe ConnectionFactory que deve abrir conexões.
Então nas classes que fazem a persistencia de dados eu coloco:



Só que quando eu fecho a conexão nessas classes parece que esta fechando na ConectionFactory também.

Acho que ficou confuso... mas se alguém entendeu pode me ajudar ?

Obrigado.
Um abraço.
ronybrand
Thread.start()

Membro desde: 28/05/2003 15:54:00
Mensagens: 29
Offline

quando for realizar uma nova operação abra novamente uma conexão

Rony Brand
SCJP
Zeed01
Virtual Machine Man

Membro desde: 27/10/2006 16:44:29
Mensagens: 668
Offline

Boa tarde colegas !

ronybrand:
Então mas ai é que fica ruim... porque você já viu o tempo que demora para criar uma nova conexão ?
Considerando que eu estou dando o commit, faz sentido ter que fechar a conexão ?

Obrigado.

Um abraço.
ronybrand
Thread.start()

Membro desde: 28/05/2003 15:54:00
Mensagens: 29
Offline

usa connection pool, ai a conexão é reaproveitada:

dbcp
http://jakarta.apache.org/commons/dbcp/

ou ainda c3p0

Rony Brand
SCJP
Zeed01
Virtual Machine Man

Membro desde: 27/10/2006 16:44:29
Mensagens: 668
Offline

ronybrand:

Se não for abusar você tem um exemplo ?

Obrigado.

Um abraço.
ronybrand
Thread.start()

Membro desde: 28/05/2003 15:54:00
Mensagens: 29
Offline

http://www.guj.com.br/posts/list/3033.java#14739

Rony Brand
SCJP
Zeed01
Virtual Machine Man

Membro desde: 27/10/2006 16:44:29
Mensagens: 668
Offline

Mas como fazer isso na minha aplicação que é swing ?
fabim
GUJ Master
[Avatar]

Membro desde: 14/12/2006 19:30:03
Mensagens: 1268
Localização: Vitoria - Espirito Santo
Offline

Explique mais detalhadamente o quê vc "altera" em uma aplicação que nao "aparece" na outra.
Pode ser que o problema não esteja na conexão.

ειπεν αυτη ο ιησους εγω ειμι η αναστασις και η ζωη ο πιστευων εις εμε καν αποθανη ζησεται

Sun Certified Web Component Developer
Sun Certified Java Programmer
Sun Certified Java Associate
Sun Certified Business Component Developer - Em Andamento
Bacharelando em Sistemas de Informacao


[MSN]
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team