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

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar