Fórum Como converter o tipo (System.String) no tipo (System.Byte[]) #579637
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:
3 - Código onde recebo os dados do método e preencho a tela:
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
Curtir tópico
+ 0
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");
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
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)