Como converter o tipo (System.String) no tipo (System.Byte[])

03/04/2017

0

Boa noite! O problema que estou tendo aqui é o seguinte: Tenho uma tabela no sqlserver onde gravo dados das empresas, em uma coluna eu gravo a imagem da logo da empresa, a parte de insert está ok, consigo fazer as inserções tranquilamente, porém quando preciso alterar algum dado nas empresas a minha consulta retorna o erro: {"Não foi possível efetuar a consulta. Detalhes:Não é possível converter um objeto do tipo 'System.String' no tipo 'System.Byte[]'."} , se alguém puder ajudar a apontar onde estou errando, agradeço pela ajuda!

1 - Uso uma procedure para buscar os dados na tabela;
2 - Abaixo segue o método da consulta:
 //Método para Consultar empresa
        public EmpresasColecaoDto ConsultarEmpresa(string desc_empresa)
        {
            try
            {
                //Criando uma nova instância de coleção de lojas
                EmpresasColecaoDto empresasColecaoDto = new EmpresasColecaoDto();

                //Conexão com banco de dados
                conexaoIncor.LimparParametros();
                conexaoIncor.AdicionarParametros("@desc_empresa", desc_empresa);

                //Criando uma DataTable para receber dados da consulta
                DataTable dataTableConsulta = conexaoIncor.ExecutarConsulta(CommandType.StoredProcedure, "spConsultarEmpresa");

                //Transformar o datatable em um coleção de empresas
                foreach (DataRow datarow in dataTableConsulta.Rows)
                {
                    //Criar uma empresa vazio para receber os dados das linhas(rows) do foreach
                    EmpresasDto empresaDto = new EmpresasDto();

                    empresaDto.numg_empresa = Convert.ToInt32(datarow["Numg_Empresa"]);
                    empresaDto.numr_cnpj = Convert.ToString(datarow["Numr_Cnpj"]);
                    empresaDto.desc_razao = Convert.ToString(datarow["Desc_Razao"]);
                    empresaDto.desc_fantasia = Convert.ToString(datarow["Desc_Fantasia"]);
                    empresaDto.numr_inscestadual = Convert.ToString(datarow["Numr_InscEstadual"]);
                    empresaDto.numr_inscmunicipal = Convert.ToString(datarow["Numr_InscMunicipal"]);
                    empresaDto.numr_foneprincipal = Convert.ToString(datarow["Numr_FonePrincipal"]);
                    empresaDto.numr_fone2 = Convert.ToString(datarow["Numr_Fone2"]);
                    empresaDto.desc_emailprincipal = Convert.ToString(datarow["Desc_EmailPrincipal"]);
                    empresaDto.desc_contato = Convert.ToString(datarow["Desc_Contato"]);
                    empresaDto.data_inclusao = Convert.ToString(datarow["Data_Inclusao"]);
                    empresaDto.imag_imagem = (byte[])datarow["imag_imagem"];  //fiz o cast aqui porém o erro estoura nesta linha
                                                                            
                    empresasColecaoDto.Add(empresaDto);

                }
                              
                return empresasColecaoDto;
            }
            catch (Exception exception)
            {
                throw new Exception("Não foi possível efetuar a consulta. Detalhes:" + exception.Message);
            }
        }



3 - Código onde recebo os dados do método e preencho a tela:
else if (acaoTela == AcaoTela.Consultar)
            {
                this.Text = "Empresa - Manutenção (Consultar)";
                ValidacoesNg Validacao = new ValidacoesNg();
                numg_empresaselecionada = empresaDto.numg_empresa;
                desc_empresaselecionada = empresaDto.desc_razao;
                txCodigo.Text = Convert.ToString(empresaDto.numg_empresa);
                txCnpj.Text = empresaDto.numr_cnpj;
                txRazao.Text = empresaDto.desc_razao;
                txFantasia.Text = empresaDto.desc_fantasia;
                txInscEstadual.Text = empresaDto.numr_inscestadual;
                txInscMunicipal.Text = empresaDto.numr_inscmunicipal;
                txEmail.Text = empresaDto.desc_emailprincipal;
                txContato.Text = empresaDto.desc_contato;
                txInclusao.Text = empresaDto.data_inclusao;
                txExclusao.Text = empresaDto.data_exclusao;
                txFone1.Text = empresaDto.numr_foneprincipal;
                txFone2.Text = empresaDto.numr_fone2;
                if (empresaDto.imag_imagem == null)
                {
                    picboxLogo.Image = null;
                }
                else
                {
                    MemoryStream memory = new MemoryStream(empresaDto.imag_imagem);
                    picboxLogo.Image = Image.FromStream(memory);
                                         
                }
Charles Menezes

Charles Menezes

Responder

Posts

11/04/2017

Guilherme

Boa tarde,

uma maneira de pegar o byte de um char ou string é utilizando ASCIIEncoding conforme o código abaixo, sendo que seu retorno será um array de bytes.

ASCIIEncoding getBytes = new ASCIIEncoding();
var Teste = getBytes.GetBytes("Teste");
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar