Preciso de uma aplicação simples que fique lendo uma tabela no bando e sempre que aparecer um novo registro, me avise.
Exemplo: abro a aplicação .jar e nao me mostra nada.
Apos inserir um novo dado na tabela, a aplicação de a mensagem: Novo dado inserido… e aguarde ate inserir o proximo…
assim que inserir mais um, exiba a mensagem: Novo dado inserido…
tenta da uma olhadinha no apache camel, deve ter algo parecido lá
abrasss
M
Murilo_Ferreira
OK, você tem conhecimento em Java ? tem conhecimento em JDBC ?
D
davidsonmagalhaes
Comecei no java a pouco tempo, mas conheco outras linguagem bem!
Preciso somente desse alerta, se caso inserir uma nova linha na tabela.
M
Murilo_Ferreira
E que se vc não conhecer JDBC, Java Basico, Swing e Threads vai ficar dificil fazer isso.
Como funciona essa tabela, ela sempre vai estar vazia ? ou sempre que incrementar 1 ou mais registros você quer avisar ?
D
davidsonmagalhaes
A tabela sempre fica cheia… ao incrementar somente 1 registro me avisar…
pensei q era coisa bem simples isso …
eu ja tenho a conexao com o banco, ja consigo ler registros, tudo certinho … fiz estes passos para aprender mais… dai preciso dessa aplicação agra… que me avisa ao inserir 1 novo registro.
D
davidsonmagalhaes
OBS: to usando postgresql
Essa classe que to usando para conectar e etc … talves pode ajudar a fazer o q preciso…
try{Stringurl="jdbc:postgresql://localhost:5432/TesteJava";Stringusuario="postgres";Stringsenha="00000000000000";Class.forName("org.postgresql.Driver");Connectioncon;con=DriverManager.getConnection(url,usuario,senha);System.out.println("Conexão realizada com sucesso.");Statementstm=con.createStatement();// stm.executeQuery("INSERT INTO teste VALUES (1,'Cynthia')"); StringSQL="Select * from notificacoes order by id desc limit 1";ResultSetrs=stm.executeQuery(SQL);rs.next();Stringid=rs.getString("id");System.out.println("linhas: "+id);con.close();}catch(Exceptione){e.printStackTrace();}}
}
D
drsmachado
Mas se já conhece outras linguagens, por que não faz em uma outra linguagem já conhecida e que seja “a coisa mais simples do mundo”?
Aliás, a própria idéia de alertar a cada inserção já diz que não é simples, afinal, o banco não vai chamar tua aplicação a partir de uma trigger para te dizer “Ô mermão, acabaram de inserir um registro aqui, dá uma olhada”.
É você que precisa ir ao banco de dados a cada período de tempo. Isso, caso seja malfeito, poderá extrapolar o limite de acessos ao banco de dados e a memória da JVM, entre outras coisas.
D
davidsonmagalhaes
O problema é que eu nao so quero que me avise… Ja tenho pronto uma aplicação em java que vai enviar esse ultimo registro por email… é um sistema de chamados… sempre q abre um novo chamado, envia um email… o envio de emial esta pronto… so falta msm pegar esse ultimo registro inserido e desmembrar no email para enviar
D
drsmachado
Acontece que fazer isso, da forma e pelo “lado” que você está querendo fazer é a pior das opções.
Por que raios não faz quando o próprio sistema está inserindo o tal chamado e não depois que o banco de dados já tem o registro?
É muito mais simples e menos custoso.
M
Murilo_Ferreira
Segue um exemplo simples se intreface gráfica.
importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;publicclassJDBCRegisterMonitor{publicstaticvoidmain(String[]args){Connectionconnection=null;try{Class.forName("com.mysql.jdbc.Driver");connection=DriverManager.getConnection("jdbc:mysql://12.0.0.1:3306/test","root","");PreparedStatementpstmt=connection.prepareStatement("select count(*) from institution");ResultSetresult=pstmt.executeQuery();result.next();intcount=result.getInt(1);while(true){pstmt=connection.prepareStatement("select count(*) from institution");result=pstmt.executeQuery();result.next();intcurrentCount=result.getInt(1);if(currentCount>count){System.out.println(currentCount-count+" registros inseridos");count=currentCount;}Thread.sleep(5000);//pausa de 5 em 5 segundos para fazer nova verificação}}catch(Exceptionex){ex.printStackTrace();}finally{if(connection!=null){try{connection.close();}catch(SQLExceptione){e.printStackTrace();}}}}}
J
jonasjgs2
meu amigo… independente da linguagem eu faria o seguinte:
primeiro criar uma triger no banco que quando houver
um registro inserido na sua tabela adicione
este registro em uma tabela qualquer
ex: (tabregincluidos)…
nesta tabela eu colocaria um flag nela…
na aplicacao que vc vai desenvolver basta
le se tem algum registro na tabela tabregincluidos
com o flag igual a 0
depois que vc processar e fazer o que vc quiser com
este registro vc marca o flag para 1… apenas para
mostrar que vc processou este
registro…
isto resolveria o seu problema independentemente
da linguagem que vc estiver usando…
V
ViniGodoy
Por favor, ao postar tópicos, NÃO DEIXE O TÍTULO INTEIRO EM LETRAS MAIÚSCULAS.
Além disso, ao postar código, siga essas dicas para deixa-lo formatado: