Neste artigo, veremos como inserir e obter imagens de um banco de dados SQL Server e como exibir as imagens em um controle GridView.
Acompanhe a versão para desktop deste artigo no link: Trabalhando com imagens no SQL Server – Macoratti.net
Vamos iniciar abrindo o Visual Web Developer 2010 Express Edition e criando um novo projeto via opção File -> New Project.
Selecione a linguagem Visual C# e a opção Web.
A seguir, selecione o template ASP .NET Web Application e informe o nome Tratando_Imagens_SQLServer.
Criando o banco de dados no SQL Server
Eu poderia criar o banco de dados usando o SQL Server Management Studio (SSMS), mas vou usar o próprio ambiente do Visual Web Developer Express Edition.
Abra a janela DataBase Explorer e clique com o botão direito em Data Connections, clicando a seguir em Add Connection.
Na janela Add Connection, clique no botão Change e altere o Data Source para: Microsoft SQL Server Database File.
Obs: Esta janela poderá exibir outras opções de Data Source, mas eu escolhi trabalhar com um banco de dados anexado ao meu SQL Server Local.
Informe o nome do banco de dados; no exemplo, o nome usado foi Cadastro.mdf, e clique no botão OK.
Uma caixa de diálogo irá surgir informando que o banco de dados não existe e se você deseja criá-lo. Confirme e clique no botão Sim para criar o banco de dados.
Você verá na janela DataBase Explorer o banco de dados Cadastro.
Clique com o botão direito no item Tables e a seguir clique em Add New Table;
Crie a tabela Imagens definindo os campos:
- id – int – chave primária e do tipo identity;
- descrição – nvarchar(150)
- imagem – image
Assim, temos o banco de dados Cadastro.mdf e a tabela Imagens criadas e prontas para serem usadas.
Definindo as páginas do projeto
Vamos definir a página Default.aspx como a página principal do projeto clicando com o botão direito do mouse sobre essa página e selecionando a opção Set As Start Page.
Agora vamos alterar o código da página Site.Master para exibir uma opção para acessar a página onde vamos tratar as imagens conforme o código a seguir:
A seguir, vamos incluir um novo Web Form chamado Imagens.aspx em nosso projeto.
No menu Project, clique em Add New Item.
Selecione o template Web Form using Master Page, informe o nome Imagens.aspx e clique no botão Add.
Na próxima janela, selecione a master page Site.Master e clique em Ok.
Vamos incluir na página Imagens.aspx a partir da toolbox os seguintes controles:
- TextBox – ID=txtDescricao TextMode=Multiline
- FileUpload – ID=arquivoUploadImagem
- GridView – ID=gdvImagens
- Button – ID=btnUpload – Text=Enviar Arquivo
Conforme o leiaute da figura abaixo:
No controle GridView, vamos definir dois campos: Descrição e Imagem.
A seguir, vamos converter o campo Imagem em um TemplateField e definir nesse template um controle Image.
Defina a seguir as propriedades DataBindings conforme a figura abaixo para esse controle:
O código do arquivo Imagens.aspx deverá ficar da seguinte forma:
Observe que no botão Enviar Arquivo estamos tratando o evento Click.
Definindo a string de conexão no arquivo Web.Config
Abra o arquivo Web.Config e inclua o código abaixo na seção <configuration> para definir a string de conexão com o banco de dados Cadastro.mdf:
Definindo o código para tratamento das imagens
Vamos abrir o arquivo code-behind Imagens.aspx.cs e definir o seguinte código:
No início do arquivo, defina a utilização dos seguintes namespaces:
Após a declaração do formulário, obtenha a string de conexão do arquivo web.config:
string strcon = ConfigurationManager.ConnectionStrings["ConexaoSQLServer"].ConnectionString;
No evento Load da página, inclua o código abaixo:
No evento Click do botão Enviar inclua o código a seguir:
O código acima inclui uma imagem na tabela Imagens e exibe uma mensagem via JavaScript de alerta ao usuário avisando que a imagem foi incluída.
O código da rotina VincularDados() é o seguinte:
Nesse código, estamos recuperando as imagens da tabela Imagens e vinculando no controle GridView.
Após a conclusão do código acima, precisamos adicionar um arquivo HttpHandler ao nosso projeto para recuperar imagens do banco de dados, pois nós salvamos as imagens em formato binário, e obter as imagens no formato binário é fácil, mas a exibição não é tão simples assim, e por isso vamos usar um HttpHandler para resolver esse problema.
Aqui o HttpHandler é uma classe simples que lhe permite processar um pedido e retornar uma resposta para o navegador. De forma simples, o manipulador é responsável por atender solicitações do navegador. Ela só pode lidar com uma solicitação por vez o que lhe dá um bom desempenho.
No menu Project, clique em Add new Item e a seguir selecione o template Visual C# -> Web e Generic Handler, informando o nome ImagemHandler.ashx e clique no botão Add.
A seguir inclua o código abaixo no arquivo ImagemHandler.ashx:
Neste código, incluímos a linha para obter a string de conexão do arquivo web.config e definimos o código do evento ProcessRequest() para obter e exibir a imagem:
Agora podemos executar o projeto e, ao acionar o link Imagens do menu da página, poderemos incluir e exibir as imagens no controle Gridview, conforme mostra a figura abaixo:
Após selecionar uma imagem e clicar no botão Enviar Arquivo, veremos uma mensagem indicando que imagem foi incluída com sucesso.
Pegue o projeto completo aqui: Tratando_Imagens_SQLServer.zip
Fora de tópico Mostrar Código Esconder Código Mostrar EmoticonEsconder Emoticon