[color=red]org.postgresql.util.PSQLException: ResultSet não está posicionado corretamente, talvez você precise chamar next.
at org.postgresql.jdbc2.AbstractJdbc2ResultSet.checkResultSet(AbstractJdbc2ResultSet.java:2695)
at org.postgresql.jdbc2.AbstractJdbc2ResultSet.getString(AbstractJdbc2ResultSet.java:1872)
[/color]
Não sei qual é o problema, visto que estou usando o next e até tentei usar os métodos first e tudo mais(Criando um resulset navegável).
Acredito que com isso seu problema estará resolvido.
Uma outra dica é que se for fazer na mão os sql’s sem o uso de um ORM use ao menos o método PreparedStatement.
No Fórum tem muita coisa sobre isso.
Abraço e boa sorte.
R
renanmpn
Só explicar mais ou menos o que eu estou fazendo.
Isso serve somente para gerenciar um login, ou seja, o resultset terá somente uma tupla, por isso que não criei uma lista.
Os comandos sql, como este é simples, testei no próprio pgadim.
No caso no meu ele nem mesmo tá entrando no while, já sai logo de cara.
Grato pela ajuda
F
fernandopaiva
veja bem
//retorna uma lista de usuariospublicList<Usuarios>getUsuario(){List<Usuarios>lista=newArrayList<Usuarios>();PreparedStatementstm=conexao.prepareStatement("SELECT * FROM usuarios");ResultSetrs=stm.executeQuery();while(rs.next()){Usuariosu=newUsuarios();u.setLogin(rs.getString("login"));lista.add(u);}rs.close();stm.close();returnlista;}//verifica se o usuario possui loginpublicBooleanloginUsuario(Stringusuario,Stringsenha){Booleanexiste=false;//usuario naum existePreparedStatementstm=conexao.prepareStatement("SELECT * FROM usuarios WHERE login = ? AND senha = ?");stm.setString(1,usuario);stm.setString(2,senha);ResultSetrs=stm.executeQuery();if(rs.next()){existe=true;//usuario existe}rs.close();stm.close();returnexiste;}
Simples d++ …Estude sobre Pattern DAO, na apostila FJ21 da Caelum tem exemplos.
t+ e boa sorte.
L
Lucas_Abbatepaolo
Só corrigindo:
O resultSet quando retornado pela execução da query terá sempre seu cursor posicionado antes do primeiro registro, por isso é necessário utilizar o metodo next() que retorno um booleano que indica se existem um proximo registro e se este existir posiciona o cursor do resultSet neste proximo registro.
Ao que parece sua query não esta retornando nenhum registro.
R
renanmpn
Só para vocês entenderem que a query estava certa.
Olha o que retorna a busca direto pelo SGBD, ai no caso lá no meu .java o login e a senha são substituidos por este adm e 123, (Já mandei imprimir eles pra ver se estão corretos)
Isso se chama “SQL Injection” - nunca faça isso. Se o cara entrar como senha algo como :
''AND1=1;DROPTABLEhotel;
O que ele será capaz de fazer?
Hein?
Use um PreparedStatement (e obviamente não faça a concatenação dos valores “login” e “senha”. Use os “?” corretamente.
R
renanmpn
Beleza. Valeu pela dica, valeu mesmo. Porém isso arruma o problema? (Não entenda como ironia, por favor. É que estou inconformado com o erro)
E
entanglement
O seu banco compara 2 strings levando em conta a diferença entre minúsculas e maiúsculas ou não?
É que vi que pode ser que o usuário cadastrado foi “Marcelo” mas a pessoa digitou “marcelo”. Então a query irá retornar 0 registros
R
renanmpn
Não faz diferença não. porém eu digito igual a que está no banco.