[RESOLVIDO]Como passar valores informados pelo usuario para o select? - Método de login

4 respostas
andre_rjp

Boa Noite!
Estou com uma dúvida com relação ao método login que criei, gostaria de saber como inserir no select que fiz os métodos getMatricula() e getSenha(), sem causar um SQL injection.

não sei se consegui explicar direito, gostaria de passar os valores informados pelo usuário (Matricula e senha). para minha Query, se o usuario digitar: matricula: 1234 e senha=4567, esses valores fossem passados para o meu select.

Desde já agradeço!

public boolean login(Usuario usuario) { try { String sql = "select matricula,senha from usuarios where matricula=29617 and senha=020506"; PreparedStatement stmt = this.con.prepareStatement(sql); ResultSet resultado = stmt.executeQuery(); while (resultado.next()) { String matricula = (resultado.getString("matricula")); System.out.println(matricula); String senha = (resultado.getString("senha")); System.out.println(senha); stmt.execute(); if (matricula.equals(usuario.getMatricula()) && senha.equals(usuario.getSenha())) { System.out.println("Usuario" + usuario.getMatricula() + " logado."); return true; } } resultado.close(); stmt.close(); System.out.println("Usuário ou senha inválidos."); return false; } catch (SQLException e) { System.out.println("Ocorreu um erro no login"); throw new RuntimeException(e); } }

4 Respostas

java.claudio

Crie duas variáveis, uma que aponte pro campo onde o usuário vai digitar, no caso login e senha. Depois você só altera esse seu select ai :

Espero ter compreendido certo sua pergunta e também ter ajudado, caso contrário manifeste-se aqui!

Abraço!

andre_rjp

Bom dia claudio, pesquisando por ai, fiz dessa maneira, fiz alguns testes chamando esse metodo em uma classe teste, e funcionou legal, sera que ha algum problema em ser dessa forma?

public boolean login(Usuario usuario) {
		try {
			String sql = "select matricula,senha from usuarios where matricula=? and senha=?";
			PreparedStatement stmt = this.conexao.prepareStatement(sql);
			
			// Setando os valores para o select.
			stmt.setString(1,usuario.getMatricula());
			stmt.setString(2,usuario.getSenha()); 
			
			ResultSet resultado = stmt.executeQuery();
			while (resultado.next()) {
				String matricula =  (resultado.getString("matricula"));//Grava na variavel matricula o valor encontrado no Banco de Dados.
				System.out.println("Matricula digitada: "+matricula);
				String senha = (resultado.getString("senha"));//Grava na variavel senha o valor encontrado no Banco de dados.
				System.out.println("Senha digitada: "+senha);
				
				stmt.execute();
				if (matricula.equals(usuario.getMatricula())
						&& senha.equals(usuario.getSenha())) {//Compara os dados informados pelo usuario e os dados informados no banco.
					System.out.println("Usuario " + usuario.getNome()
							+ " logado.");
					return true;
				}
			}
			resultado.close();
			stmt.close();
			System.out.println("Usuรกrio ou senha invรกlidos.");
			return false;
		} catch (SQLException e) {
			System.out.println("Ocorreu um erro no login");
			throw new RuntimeException(e);
		}
	}
java.claudio

De forma alguma, a sua maneira está certo também!
Qualquer coisa estamos ae!

Abraço!

andre_rjp

Vou colocar como resolvido.

Obrigado.

Criado 1 de fevereiro de 2012
Ultima resposta 2 de fev. de 2012
Respostas 4
Participantes 2