1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Retornar somente 1 registro na consulta em forma de objeto

Boa noite pessoal,

sou novo aqui no fórum e no java também.

estou fazendo um crud básico e me deparei com o seguinte problema. No meu método getAll faço da seguinte maneira para retornar os dados.

public List<Contato> getAll()
    {
        try{
            //Cria a lista para armazenar os contatos
            List<Contato> listaContatos = new ArrayList<Contato>();

            //Prepared Statement da consulta
            String query = "SELECT * FROM contatos";
            PreparedStatement stmt = connection.prepareStatement(query);

            //Retorna o resultado da consulta
            ResultSet resultado = stmt.executeQuery();

            while(resultado.next()){                
                //Cria o objeto contato
                Contato contato = new Contato();
                contato.setId(resultado.getLong("id"));
                contato.setNome(resultado.getString("nome"));
                contato.setEmail(resultado.getString("email"));
                contato.setEndereco(resultado.getString("endereco"));

                //Converte a data para Calendar
                Calendar data = Calendar.getInstance();
                data.setTime(resultado.getDate("dt_nascimento"));
                contato.setDtNascimento(data);

                //Adiciona o objeto contado à lista de contatos
                listaContatos.add(contato);
            }

            resultado.close();
            stmt.close();

            return listaContatos;


        }catch(SQLException e){

            throw new RuntimeException(e);
        }
    }

Agora estou criando o método find e como sempre me retornará um único registro gostaria de poder receber estes dados da seguinte forma. É possível? Já vi que com ResultSet e executeQuery não funciona.

//Prepare Statement da consulta
            String sql = "SELECT * FROM contatos WHERE id = ? LIMIT 1";
            PreparedStatement stmt = connection.prepareStatement(sql);
            stmt.setLong(1, id);

            //Retorna o resultado da consulta
            ResultSet resultado = stmt.executeQuery();
            if(resultado.getLong("id") != id)
                throw new IllegalArgumentException("O contato selecionado de id = "+id+" não existe!");

            Contato contato = new Contato();
            contato.setId(resultado.getLong("id"));
            contato.setNome(resultado.getString("nome"));
            contato.setEmail(resultado.getString("email"));
            contato.setEndereco(resultado.getString("endereco"));
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags busca ou faça a sua própria pergunta.