Nao estou conseguindo buscar um determinado registro!

8 respostas
I

Olá Pessoal… Estou com um problema na consulta abaixo…

public BeanListaRemove BuscarUsuarioporID(BeanListaRemove usuario) throws ClassNotFoundException {

        Connection conexao = null;

        try {

            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            String bd = "jdbc:odbc:meubanco";
            conexao = DriverManager.getConnection(bd);

            System.out.println("A conexão foi um sucesso");

            String SQL = "SELECT * Usuario where idUsuario=?";

            PreparedStatement pst =  conexao.prepareStatement(SQL);
            pst.setString(1, usuario.getId());
           
            ResultSet rs = pst.executeQuery(SQL);

            BeanListaRemove usuarioencontrado = new BeanListaRemove();

         

             String id = rs.getString(1);
             String user = rs.getString(2);

             usuarioencontrado.setEmail(id);
             usuarioencontrado.setNome(user);

            

            return  usuarioencontrado;

        } catch (SQLException e) {
            // se houve algum erro, uma exceção é gerada para informar o erro
            e.printStackTrace(); //vejamos que erro foi gerado e quem o gerou
             return null;
        } finally {


            try {
                conexao.close();
            } catch (SQLException onConClose) {
                System.out.println("Houve erro no fechamento da conexão");
                onConClose.printStackTrace();
            }
        } // fim do bloco try-catch-finally


    }

Ele dá o seguinte erro !

Obrigado…a todos !!!

Rodrigo César
Salvador-BA

8 Respostas

nel

Olá!

Então, esta linha é o seu real problema: String SQL = "SELECT * Usuario where idUsuario=?";
Ele não reconhece o ‘*’, quando desejares buscar todas as colunas de uma determinada tabela deve deixar isso explicitio no momento da consulta.

Supondo que queira apenas duas colunas da sua tabela, então:

//supondo, lógico, que email e nome são colunas da sua tabela usuario String SQL = "SELECT u.email, u.nome Usuario u where u.idUsuario=?";

Ah! Ia esquecendo, não tem o porque de criar duas variaveis String, id e user para guardar o resultado da consulta, no seu caso, basta setar direto no objeto concorda?

usuarioencontrado.setEmail(rs.getString(1)); usuarioencontrado.setNome(rs.getString(2));

Espero ter ajudado.
Abraços.

pmlm

Experimenta retirar o parâmetro do executeQuery.

Assim:

ResultSet rs = pst.executeQuery();

I

Galera!! Obrigado!

É aqui que tenho encontrado ajuda para resolver meu trabalho

Obrigado a todos!

I

Galera, fiz as recomendações…ok?? continuo com o mesmo tipo de erro !!

public BeanListaRemove BuscarUsuarioporID(BeanListaRemove usuario) throws ClassNotFoundException {

        Connection conexao = null;

        try {

            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            String bd = "jdbc:odbc:meubanco";
            conexao = DriverManager.getConnection(bd);

            System.out.println("A conexão foi um sucesso");

            String SQL = "SELECT nomeUsuario , emailUsuario FROM Usuario where idUsuario=?;";

            PreparedStatement pst =  conexao.prepareStatement(SQL);
            pst.setInt(1, usuario.getId());
           
            ResultSet rs = pst.executeQuery(SQL);

            BeanListaRemove usuarioencontrado = new BeanListaRemove();

            usuarioencontrado.setNome(rs.getString(1));
            usuarioencontrado.setEmail(rs.getString(2));
             
            return  usuarioencontrado;

        } catch (SQLException e) {
            // se houve algum erro, uma exceção é gerada para informar o erro
            e.printStackTrace(); //vejamos que erro foi gerado e quem o gerou
             return null;
        } finally {


            try {
                conexao.close();
            } catch (SQLException onConClose) {
                System.out.println("Houve erro no fechamento da conexão");
                onConClose.printStackTrace();
            }
        } // fim do bloco try-catch-finally


    }

Fiz o teste no SQL no proprio Access…e a consulta executou normalmente!

Obrigado…a quem puder continuar ajudando!!

pmlm

Ainda não fizeste o que eu disse acima.

aeciovc

viu se ele não tá retornando essa linha NULL??

onde vc tá pondo o usuário e senha??

e sobre essa do *, não existe isso… tenho aplicações com *. nada a ver!

I

Bom…Obrigado mais uma vez a todos que estão ajudando…

Quanto ao colega que falow da senha…já tenho feito várioas operações com o banco…nao é um problema de conexao…!!

Ao colega que pediu pra eu tira o ResultSet rs = pst.executeQuery(); …eu fiz e deu erro também…

O problema está realmente no resultado da consulta…

I

Galerinha! deu certo…consegui

deu certo quando coloquei esse trecho de codigo e tirei o argumento como o colega falow…

if (!rs.next()){
               throw new ClassNotFoundException ("Nao foi encontrado nenhum user");
             }

Obrigado a todos…

Criado 29 de outubro de 2009
Ultima resposta 30 de out. de 2009
Respostas 8
Participantes 4