SQLException: Before start of result set... O que é isso?! [RESOLVIDO]

Fala pessoal beleza? Estou fazendo um trabalho de faculdade e estou conectando no banco com o JDBC, quando vou executar uma query ele me retorna a exception a seguir. Segue também as classes de conexão no banco, de consulta e main.

OBS: a main eu to instanciando a pesquisa apenas para teste, ve se exibe o resultado. ok?

Conecta no banco

[code]package database;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

public class ConectaBanco {
//Variáveis com os parametros para conexão no banco de dados.
private String host = “jdbc:mysql://localhost/db_transito”;
private String user = “root”;
private String pass = “root”;
public Connection conn;
public Statement stm;

//Método para conectar ao banco de dados MySQL.
public ConectaBanco(){
    try{
        Class.forName("com.mysql.jdbc.Driver").newInstance();
        conn = DriverManager.getConnection(host, user, pass);
        stm = conn.createStatement();
    }
    catch(ClassNotFoundException ex){
        ex.printStackTrace();
    }
    catch(SQLException ex){
        ex.printStackTrace();
    }
    catch(IllegalAccessException ex){
        ex.printStackTrace();
    }
    catch(InstantiationException ex){
        ex.printStackTrace();
    }
}

}[/code]

Consulta o Login

[code]package database;

import java.sql.ResultSet;
import java.sql.SQLException;

public class QueryLogin extends ConectaBanco{
private String sqlLogin;
private ResultSet resultado;
private String senha;

public QueryLogin(String usuario){
    try{
        this.sqlLogin = "select usuario, senha from tb_users where usuario = '" +
                usuario + "'";
        this.resultado = stm.executeQuery(sqlLogin);
        this.senha = resultado.getString("senha");
        System.out.println(this.senha);
    }
    catch(SQLException ex){
        ex.printStackTrace();
    }
}

public String getSenha(){
    return this.senha;
}

}[/code]

Main

[code]package trabalhotransito;

import janelas.;
import database.
;

public class Main {
public static void main(String[] args) {
FormPrincipal formPrincipal = new FormPrincipal();
formPrincipal.setVisible(true);
QueryLogin teste = new QueryLogin(“root”);
}
}[/code]

Exception

java.sql.SQLException: Before start of result set at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1075) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:989) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:984) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:929) at com.mysql.jdbc.ResultSetImpl.checkRowPos(ResultSetImpl.java:841) at com.mysql.jdbc.ResultSetImpl.getStringInternal(ResultSetImpl.java:5656) at com.mysql.jdbc.ResultSetImpl.getString(ResultSetImpl.java:5576) at database.QueryLogin.<init>(QueryLogin.java:16) at trabalhotransito.Main.main(Main.java:10)

outra coisa, é correta a maneira que eu estou trabalhando com a orientacao a objeto? kkk… Digo a respeito de criar todas essas classes separadas…

Obrigado desde já!!!

Olá,

quando você realiza uma consulta ao banco, deve iterar o ResultSet para recuperar os resultados.
Seria mais ou menos assim:

public QueryLogin(String usuario){  
        try{  
            this.sqlLogin = "select usuario, senha from tb_users where usuario = '" +  
                    usuario + "'";  
            this.resultado = stm.executeQuery(sqlLogin);
            if(resultado != null && resultado.next()){
                this.senha = resultado.getString("senha");
            }
            System.out.println(this.senha);  
        }  
        catch(SQLException ex){  
            ex.printStackTrace();  
        }  
    }

Abraços.

2 curtidas

Tem razão amigo… agora sim funcionou beleza…

Muito obrigado.
Abraço.

[quote=Soulless-BR]Tem razão amigo… agora sim funcionou beleza…

Muito obrigado.
Abraço.[/quote]

Opa … denada!

Altere o título do tópico para [RESOLVIDO] …

Para outros que terem este problema conseguirem encontrar a solução.

Abraços.