Erro em Select

Tenho um método que recebe como parametro um codigo, fazendo a comparaçao desse codigo com o codigo cadastrado no banco
ele deveria trazer todos os outros campos, mas ele me ta dando um erro de SQL e acaba nao trazendo os meus campos o codigo eh o segunte

[code] //metodo que retorna o cliente selecionado atraves do codigo e joga para os campos
public Clientes getCliente(Integer codigo) {
try {
// Comando sql para a busca
String sqlBusca = “select ID_PESSOA,NOME,SOBRENOME,SENHA,ENDERECO,CPF,RG,CIDADE,ESTADO,DATA_NASC from pessoa where ID_PESSOA = ?”;
String sqlBuscaUsr = “select TIPO_USR from tipo_usuario where ID_TIPO_USUARIO = ?”;
// Verifica se o comando esta certo e prepara para a execução
PreparedStatement busca = Conecta.getInstance().prepareStatement(sqlBusca);
PreparedStatement buscaUsr = Conecta.getInstance().prepareStatement(sqlBuscaUsr);
// Atribui o valor do código para o ?
busca.setInt(1, codigo);
buscaUsr.setInt(1,codigo);
// Executa comando de busca e armazena todo o resultado dentro do
// ResultSet rs
ResultSet rs = busca.executeQuery();
ResultSet rsUsr = buscaUsr.executeQuery();
// Cria um novo cliente para guardar os dados
Clientes clientes = new Clientes();

        // Laço percorrendo o resultado que esta no rs(ResultSet)
        while (rs.next()) {
            // Armazenando os valores que estão no banco em uma variável do
            
            clientes.setCodigo(rs.getInt("ID_PESSOA"));
            clientes.setNome(rs.getString("NOME"));
            clientes.setSobrenome(rs.getString("SOBRENOME"));
            clientes.setSenha(rs.getString("SENHA"));
            clientes.setEndereco(rs.getString("ENDERECO"));
            clientes.setCpf(rs.getString("CPF"));
            clientes.setRg(rs.getString("RG"));
            clientes.setCidade(rs.getString("CIDADE"));
            clientes.setEstado(rs.getString("ESTADO"));
            clientes.setDatadenascimento(rs.getString("DATA_NASC"));
            clientes.setTipo_usuario(rsUsr.getString("TIPO_USR"));
            
        }



            return clientes;
    } catch (SQLException e) {
            System.out.println("Não foi possível localizar o cliente ");
            return null;
    }
}[/code]

ele cai direto no catch.
eu executei esse meu sql no MYSql e funcinou perfeitamente mas no java to com esses problemas
desde já agradeço

olá…

1º) sua tabela pessoa tem algum relacionamento com a tipo_usuário? você pode usar somente uma query para trazer os resultados que voce precisa.

2º) poste o erro que aparece, talvez o erro sejá até intuitivo! poste aí que fica mais fácil ajudar.

Sem o stacktrace do erro fica difícil.

Notei que vc está usando 2 queries, e neste ResultSet:

ResultSet rsUsr = buscaUsr.executeQuery();  

Não vi nenhum rsUsr.next() aí! Vc deum um next() somente no primeiro ResultSet.

Provavelmente vc tem o relacionamento de tipo_usuario com pessoa né? Então é melhor vc fazer um join das duas tabelas e trazer tudo no mesmo sql.

Amigo, altere seu codigo no final para seguinte forma:

catch (SQLException e) { e.printStackTrace(); System.out.println("Não foi possível localizar o cliente "); return null; }

Dessa forma será exibido detalhadamente o erro e ficará mais facil para te ajudar.

[]'s

Seguinte refiz meu codigo SQL

// Comando sql para a busca
String sqlBusca = "select P.ID_PESSOA,P.NOME,P.SOBRENOME,P.SENHA,P.ENDERECO,P.CPF,P.RG,P.CIDADE,P.ESTADO,P.DATA_NASC,T.TIPO_USR from pessoa P,tipo_usuario T where ID_PESSOA = ? and ID_TIPO_USUARIO = ?";
// Verifica se o comando esta certo e prepara para a execução
PreparedStatement busca = Conecta.getInstance().prepareStatement(sqlBusca);
// Atribui o valor do código para o ?
busca.setInt(1, codigo);
// Executa comando de busca e armazena todo o resultado dentro do
ResultSet rs = busca.executeQuery();
           

e o erro que surge quando eu executo esse metodo é o seguinte
java.sql.SQLException: No value specified for parameter 2
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:910)
at com.mysql.jdbc.PreparedStatement.fillSendPacket(PreparedStatement.java:1674)
at com.mysql.jdbc.PreparedStatement.fillSendPacket(PreparedStatement.java:1622)
at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1332)

Obrigado a quem tá me ajudando

Vc tem 2 parametros no teu sql cara. Faltou vc dar o setInt no campo tipo_produto:

where ID_PESSOA = ? and ID_TIPO_USUARIO = ?"; 
busca.setInt(1, codigo);  

//falta algo como a linha abaixo
busca.setInt(2, codigoTipoUsuario);  

Amigo fiz o que vc disse
defini inicialmente

// Atribui o valor do código para o ?
            busca.setInt(1, codigo);
            busca.setInt(2,codigo);

usando o mesmo parametro para os 2
depois usei 2 parametros diferentes

// Atribui o valor do código para o ?
            busca.setInt(1, codigo);
            busca.setInt(2,codigoUsr);

e de qualquer um dos 2 modos ele me gerou outro erro que é o seguinte

java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0).
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:910)
at com.mysql.jdbc.PreparedStatement.setInternal(PreparedStatement.java:2715)
at com.mysql.jdbc.PreparedStatement.setInternal(PreparedStatement.java:2746)
at com.mysql.jdbc.PreparedStatement.setInt(PreparedStatement.java:2697)
cara nao to vendo o erro olho varias vezes e pra mim ta certo o codigo SQL joguei no MySql e funciono beleza
mass aqui sem chance

Estranho cara…

teu sql está assim:

"select P.ID_PESSOA,P.NOME,P.SOBRENOME,P.SENHA,P.ENDERECO,P.CPF,P.RG,P.CIDADE,P.ESTADO,P.DATA_NASC,T.TIPO_USR from pessoa P,tipo_usuario T where ID_PESSOA = ? and ID_TIPO_USUARIO = ?";

da pra dar uma melhoradinha, fazendo o join entre as duas tabelas e usando o alias P. e T. nas colunas de restrição que recebem os parametros:

"select P.ID_PESSOA,P.NOME,P.SOBRENOME,P.SENHA,P.ENDERECO,P.CPF,P.RG,P.CIDADE,P.ESTADO,P.DATA_NASC,T.TIPO_USR from pessoa P,tipo_usuario T where P.ID_TIPO_USUARIO = T.ID_TIPO_USUARIO and P.ID_PESSOA = ? and T.ID_TIPO_USUARIO = ?";

Tente aí e nos retorne,