Metodos ResultSet

Gostaria de saber a diferença entre o metodo :
ResultSet.first();
ResultSet.next();

Sendo que pelo meu SQL só retorna um registro, ou seja nao preciso navegar…
Ex:
Select * from usuario where login = ‘diego’ and codUsuario = 2;

Obs: Pelo que entendi o metodo first() procura somente no primeiro registro e o next() sai varrendo ate o final…

No meu codigo se eu usar first() da erro.

Operação inválida para encaminhar apenas conjunto de resultados: first

e se usar next() tbem da erro… ele nem entra…

Codigo:

[code]
public boolean verificaOperador(Operador ope) throws SQLException {

	PreparedStatement smtp = this.conexao
			.prepareStatement("select * from operador where login = ? and senha = ?");
	smtp.setString(1, ope.getLogin());
	smtp.setString(2, ope.getSenha());
	ResultSet rs = smtp.executeQuery();
	Operador operador = null;
	if (rs.first()) {
		operador = new Operador();
		operador.setCodOperador(Integer.parseInt(rs
				.getString("codigoOperador")));
		operador.setPerfil(Integer.parseInt(rs.getString("codPerfil")));
		operador.setLogin(rs.getString("login"));
		operador.setSenha(rs.getString("senha"));
	}
	smtp.close();
	rs.close();
	System.out.println(operador.getSenha().equals("123"));
	if (operador == null || !operador.getSenha().equals(ope.getSenha())) {
		return false;
	} else {
		return true;
	}
}
[/code]

A consulta esta correta pois eu testei no banco…

Obrigado…

public boolean verificaOperador(Operador ope) throws SQLException {
 
 		PreparedStatement smtp = this.conexao
 				.prepareStatement("select * from operador where login = ? and senha = ?");
 		smtp.setString(1, ope.getLogin());
 		smtp.setString(2, ope.getSenha());
 		ResultSet rs = smtp.executeQuery();
 		Operador operador = null;
 		if (rs.next()) {
                        // o login existe e a senha está correta
 			operador = new Operador();
 			operador.setCodOperador(Integer.parseInt(rs
 					.getString("codigoOperador")));
 			operador.setPerfil(Integer.parseInt(rs.getString("codPerfil")));
 			operador.setLogin(rs.getString("login"));
 			operador.setSenha(rs.getString("senha"));
 		} else {
                       // o login não existe, ou existe e a senha está incorreta
                }
 		try { smtp.close(); } catch (SQLException ex) {}
 		try { rs.close(); } catch (SQLException ex) {}
 		System.out.println(operador.getSenha().equals("123"));
 		return operador != null && operador.getSenha().equals(ope.getSenha());
 	}