Dúvida com insert no java e mysql

MySQL

Java

22/09/2014

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

Raphael Gumm

Curtidas 0

Melhor post

Ronaldo Lanhellas

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

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.

  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

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

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

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
POSTAR