SALVAR IMAGEM NO SQL SERVER COM VISUAL STUDIO

SQL Server

.NET

Automação Comercial

23/12/2015

Olá, estou tentando salvar no banco de dados sql server a logomarca dos clientes que cadastro, estou utilizando o visual studio 2015.
Está retornando o seguinte erro {"Não existe mapeamento do tipo de objeto System.Drawing.Bitmap para um provedor gerenciado de tipo nativo."}. o código que estou usando é o seguinte:

public void Salvar(string nome, string telefone, string celular, string email, string contato, DateTime datacadastro, bool ativo, Image imagem)
        {
      

            try
            {   //Salva as informações dos clientes no banco na tabela cliente
                using (SqlConnection conexao = new SqlConnection(Conexao.stringConexao))
                {
                    conexao.Open();
                    sql.Clear();
                    comandoSql.Parameters.Clear();
                    sql.Append("INSERT INTO Cliente (Nome, Email, TelefoneFixo, Celular, ");
                    sql.Append(" Ativo, Contato, DataCadastro, Imagem)");
                    sql.Append(" VALUES (@nome, @email, @telefone, @celular,");
                    sql.Append(" @ativo, @contato, @dataCadastro, @logo)");

                    comandoSql.Parameters.Add(new SqlParameter("@nome", nome));
                    comandoSql.Parameters.Add(new SqlParameter("@email", email));
                    comandoSql.Parameters.Add(new SqlParameter("@telefone", telefone));
                    comandoSql.Parameters.Add(new SqlParameter("@celular", celular));
                    comandoSql.Parameters.Add(new SqlParameter("@ativo", ativo));
                    comandoSql.Parameters.Add(new SqlParameter("@contato", contato));
                    comandoSql.Parameters.Add(new SqlParameter("@datacadastro", datacadastro));
                    comandoSql.Parameters.Add(new SqlParameter("@logo", imagem));

                    comandoSql.CommandText = sql.ToString();
                    comandoSql.Connection = conexao;
                    comandoSql.ExecuteNonQuery();
                }
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }


como poderia resolver este problema?
Fagner

Fagner

Curtidas 0

Respostas

Fabiano Carvalho

Fabiano Carvalho

23/12/2015

Sugiro a você, não salvar a imagem no banco e sim em alguma pasta do servidor, salvando a imagem no banco pode comprometer o desempenho.

De qualquer forma, qual a estrutura da sua tabela?
GOSTEI 0
Fagner

Fagner

23/12/2015

está é a estrutura da minha tabela
CREATE TABLE [dbo].[Cliente](
	[CodCliente] [int] IDENTITY(1,1) NOT NULL,
	[Nome] [varchar](50) NOT NULL,
	[Contato] [varchar](50) NULL,
	[TelefoneFixo] [char](10) NULL,
	[Celular] [char](11) NULL,
	[Email] [varchar](120) NULL,
	[DataCadastro] [date] NOT NULL,
	[Ativo] [bit] NULL,
	[Imagem] [image] NULL,
 CONSTRAINT [PK__Cliente__DF8324D73ACCE33F] PRIMARY KEY CLUSTERED 


Pro motivos de segurança previso salvar no banco.
até agora pelo que pesquisei parece que consigo salvar com o código

            byte[] logo;

            if (imagem != null)
            {
                var stream = new System.IO.MemoryStream();

                imagem.Save(stream, System.Drawing.Imaging.ImageFormat.Png);
                stream.Seek(0, System.IO.SeekOrigin.Begin);
                logo = new byte[stream.Length];
                stream.Read(logo, 0, System.Convert.ToInt32(stream.Length));
            }
            else
            {
                logo = null;
            }


mas tenho que identificar como fazer o processo reverso para buscar no banco.
GOSTEI 0
POSTAR