none
Objeto não pode ser convertido de DBNull em outros tipos (Erro ao executar método Consulta). C# RRS feed

  • Pergunta

  • Se poderem me ajudar ... Retorna este erro quando vou fazer uma pesquisa e não  coloco nada no textBox, ele trás os campos vazios.

    Porém quando eu vou inserir algum campo e click, ele dá um erro no método e cai na exception:

    Additional information: Erro ao consultar a Cliente/Pessoa por código. Detalhes: System.InvalidCastException: Objeto não pode ser convertido de DBNull em outros tipos.

    O meu código é esse:        public  PessoaCollection  consultarPessoa_Cod(string codPessoa)

            {
                try
                {
                    PessoaCollection pessoaCollection = new PessoaCollection();
                    
                    ordemServicoDAL.LimparParametros();
                    ordemServicoDAL.AdicionarParametros("@codPessoa",codPessoa);
                    DataTable dataTablePessoa = ordemServicoDAL.executarConsulta(CommandType.StoredProcedure,"USP_CLIENTE_CONSULTAR_COD");
                  
                    foreach (DataRow dataRowLinha in dataTablePessoa.Rows)
                    {
                        PessoaDTO pessoaDTO                         = new PessoaDTO();
                        CepDTO cepDTO                               = new CepDTO();
                        LogradouroDTO logradouroDTO                 = new LogradouroDTO();
                        BairroDTO bairroDTO                         = new BairroDTO();
                        EstadoDTO estadoDTO                         = new EstadoDTO();
                        CidadeDTO cidadeDTO                         = new CidadeDTO();
                        TelefoneDTO telefoneDTO                     = new TelefoneDTO();
                        EmailDTO emailDTO                           = new EmailDTO();
                         


                         
                        pessoaDTO.CodPessoa                         = Convert.ToInt32(dataRowLinha["codPessoa"]);
                        pessoaDTO.Nome                              = Convert.ToString(dataRowLinha["nome"]);
                        pessoaDTO.DataCadastro                      = Convert.ToDateTime(dataRowLinha["dataCadastro"]);
                        pessoaDTO.TipoPessoa                        = Convert.ToBoolean(dataRowLinha["tipo_pessoa"]);
                        pessoaDTO.Cpf                               = Convert.ToInt32(dataRowLinha["cpf"]);
                        pessoaDTO.Rg                                = Convert.ToString(dataRowLinha["rg"]);
                        pessoaDTO.Nascimento                        = Convert.ToDateTime(dataRowLinha["nascimento"]);
                        pessoaDTO.Cnpj                              = Convert.ToInt32(dataRowLinha["cnpj"]);
                        pessoaDTO.Ie                                = Convert.ToInt32(dataRowLinha["ie"]);
                        cepDTO.Cep                                  = Convert.ToString(dataRowLinha["cep"]);
                        logradouroDTO.Nome                          = Convert.ToString(dataRowLinha["nome_Logradouro"]);
                        logradouroDTO.Complemento                   = Convert.ToString(dataRowLinha["complemento"]);
                        logradouroDTO.Numero                        = Convert.ToString(dataRowLinha["numero_logradouro"]);
                        bairroDTO.Nome                              = Convert.ToString(dataRowLinha["bairro"]);
                        estadoDTO.Uf                                = Convert.ToString(dataRowLinha["uf"]);
                        cidadeDTO.Nome                              = Convert.ToString(dataRowLinha["nome"]);
                        telefoneDTO.Telefone                        = Convert.ToString(dataRowLinha["telefone"]);
                        emailDTO.Email                              = Convert.ToString(dataRowLinha["email"]);


                        pessoaCollection.Add(pessoaDTO);
                    }
                    return pessoaCollection;

                }
                catch (Exception erro)
                {

                    throw new  Exception ("Erro ao consultar a Cliente/Pessoa por código. Detalhes: "+ erro);
                }

    }

    domingo, 21 de maio de 2017 15:06

Respostas

  • Se algum de seus valores do DTO podem ser nulos, você não poderá fazer a conversão direta (Convert.To*).

    Você precisa verificar se o valor no DataRow é igual a DBNull.Value e atribuir um valor padrão a sua propriedade no DTO (ou simplesmente não atribuir nada).


    Juliano Nunes - http://linkedin.com/in/julianonunes

    Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.

    Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.

    segunda-feira, 22 de maio de 2017 12:10

Todas as Respostas

  • Se algum de seus valores do DTO podem ser nulos, você não poderá fazer a conversão direta (Convert.To*).

    Você precisa verificar se o valor no DataRow é igual a DBNull.Value e atribuir um valor padrão a sua propriedade no DTO (ou simplesmente não atribuir nada).


    Juliano Nunes - http://linkedin.com/in/julianonunes

    Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.

    Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.

    segunda-feira, 22 de maio de 2017 12:10
  • Bom dia,

    Por falta de retorno esta thread esta encerrada !

    Por gentileza, caso necessário abra uma nova thread.

    Atenciosamente,


    Guilherme Macedo S

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    TechNet Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    quinta-feira, 25 de maio de 2017 17:51
    Moderador