Dúvida com insert no java e mysql
Preciso fazer um insert no meu banco de dados porém não sei qual a melhor maneira de fazer. Tenho um sistema de ponto, onde tenho um DAO para fazer a validação de dados do usuário, queria que após a validação o sistema fizesse um INSERT no banco de dados registrando o usuário a data e a hora. A dúvida é, posso implementar esse insert no mesma classe ? Como faço esse INSERT ? Lembrando que o usuário preciso pegar do meu formulário e a data e hora tem que ser no instante. Por favor me ajudem. Grato.
Raphael Gumm
Curtidas 0
Melhor post
Ronaldo Lanhellas
24/09/2014
Você tem que trabalhar com camadas, modularizando seu sistema. No seu DAO você faz o INSERT não para um tipo de registro em específico mas um INSERT genérico para qualquer tipo de dado do sistema, sendo assim você vai criar uma outra camada (um Controller) que pegue os dados do formulário, transforme no INSERT específico e mande para o DAO. Deu pra entender ?
GOSTEI 1
Mais Respostas
Raphael Gumm
22/09/2014
Sim eu consegui entender e até tentei fazer uma implementação de um exemplo que achei, porém o meu código roda mas não está inserindo no banco de dados, ainda não consegui achar o erro.
Nessa minha classe DAO tenho tanto a validação de usuário e queria implementar o INSERT de dados já que se trata de um sistema de ponto, então ele verifica se usuário existe, se existir ele já grava os dados, porém valida mas não está gravando.
try {
Class.forName(driver).newInstance();
conn = DriverManager.getConnection(url + banco, usuario, senha);
ps = conn.prepareStatement("select * from usuario where nome=? and senha=?");
ps.setString(1, nome);
ps.setString(2, pass);
rs = ps.executeQuery();
status = rs.next();
try {
PreparedStatement pst = conn.prepareStatement("insert into horarios (nome, data_hora) values (?,?)");
pst.setString(1, nome);
pst.setTimestamp(2, new java.sql.Timestamp(new java.util.Date().getTime()));
ResultSet res = pst.executeQuery();
status = res.next();Nessa minha classe DAO tenho tanto a validação de usuário e queria implementar o INSERT de dados já que se trata de um sistema de ponto, então ele verifica se usuário existe, se existir ele já grava os dados, porém valida mas não está gravando.
GOSTEI 0
Ronaldo Lanhellas
22/09/2014
Não insere porque você está executando o "executeQuery()" no INSERT, e o certo é "execute()", faça assim:
try {
PreparedStatement pst = conn.prepareStatement("insert into horarios (nome, data_hora) values (?,?)");
pst.setString(1, nome);
pst.setTimestamp(2, new java.sql.Timestamp(new java.util.Date().getTime()));
pst.execute();
GOSTEI 1
Raphael Gumm
22/09/2014
Ronaldo Lanhellas deu certo.Muito obrigado pela ajuda. Ainda estou aprendendo java então acabo me batendo um pouco em algumas coisas. Agradeço mesmo. Obrigado.
GOSTEI 0
Ronaldo Lanhellas
22/09/2014
Ronaldo Lanhellas deu certo.Muito obrigado pela ajuda. Ainda estou aprendendo java então acabo me batendo um pouco em algumas coisas. Agradeço mesmo. Obrigado.
De nada, boa sorte no aprendizado.
GOSTEI 1