Usuário com melhor resposta
Como inserir uma imagem no banco de dados

Pergunta
-
Bom dia galera, já pesquisei no fórum mas não achei nada q poderia me ajudar; preciso realizar um teste, na aplicação que estou trabalhando.
Criei uma tabela no banco de dados e um dos campos é para armazenar uma imagem, que será lida por um "BannerSlider" na minha página XHTML, não existe nada pronto ainda, mas já criei as classes para a pesquisa no banco e recuperação da imagem, mas não tenho como testar a aplicação sem conteúdo no banco.
Então, o que quero é um comando de INSERT que realize a inserção de uma imagem no banco de dados cujo o campo é do tipo VARBINARY(MAX).
Desde já agradeço a todos.
Respostas
-
Leandro,
Segue abaixo um exemplo para execução deste INSERT:
INSERT INTO TB_EXEMPLO (Nome, Bytes) SELECT 'foto.jpg' AS Nome, Img.BulkColumn AS Bytes FROM OPENROWSET(BULK N'C:\foto.jpg', SINGLE_BLOB) AS Img
Lembrando que para conseguir obter o conteúdo do arquivo dentro do SQL Server você deve habilitar o uso da procedure "xp_cmdshell". Veja abaixo:
EXEC sp_configure 'show advanced options', 1 GO RECONFIGURE GO EXEC sp_configure 'xp_cmdshell', 1 GO RECONFIGURE GO
Se ajudou na sua solução, não esqueça de marcar como resposta !
Abraços,
Durval RamosMicrosoft Partner | MTA | MCSA - SQL Server 2012---------------------------------- Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"- Sugerido como Resposta Giovani Cr quarta-feira, 9 de abril de 2014 20:14
- Marcado como Resposta Leandro de Menezes da Silva quinta-feira, 10 de abril de 2014 17:42
-
Leandro,
Normalmente o "erro 21" é indicado quando um dispositivo/diretório não foi encontrado ou quando um usuário não possui acesso.
Realmente você fez uma boa citação, você deve inserir apenas os arquivos armazenados no mesmo servidor do SQL e com os devidos acessos de leitura no diretório definido para obter o(s) arquivo(s).
Apenas como teste, insira o usuário "Everyone" do seu Windows com acesso neste diretório "D:\temp\".
Não esqueça de marcar como resposta todos os posts que ajudaram na sua solução !
Abraços,
Durval RamosMicrosoft Partner | MTA | MCSA - SQL Server 2012---------------------------------- Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"- Marcado como Resposta Leandro de Menezes da Silva quinta-feira, 10 de abril de 2014 17:42
Todas as Respostas
-
Leandro,
Segue abaixo um exemplo para execução deste INSERT:
INSERT INTO TB_EXEMPLO (Nome, Bytes) SELECT 'foto.jpg' AS Nome, Img.BulkColumn AS Bytes FROM OPENROWSET(BULK N'C:\foto.jpg', SINGLE_BLOB) AS Img
Lembrando que para conseguir obter o conteúdo do arquivo dentro do SQL Server você deve habilitar o uso da procedure "xp_cmdshell". Veja abaixo:
EXEC sp_configure 'show advanced options', 1 GO RECONFIGURE GO EXEC sp_configure 'xp_cmdshell', 1 GO RECONFIGURE GO
Se ajudou na sua solução, não esqueça de marcar como resposta !
Abraços,
Durval RamosMicrosoft Partner | MTA | MCSA - SQL Server 2012---------------------------------- Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"- Sugerido como Resposta Giovani Cr quarta-feira, 9 de abril de 2014 20:14
- Marcado como Resposta Leandro de Menezes da Silva quinta-feira, 10 de abril de 2014 17:42
-
Durval, ao executar o INSERT, aparece o seguinte erro:
Mensagem 4861, Nível 16, Estado 1, Linha 1
Não é possível carregar em massa porque o arquivo "D:\temp\foto-competicao.jpg" não pôde ser aberto. Código do erro do sistema operacional 21(O dispositivo não está pronto.).Sendo que anteriormente, eu rodei o segundo script que você postou aqui.
O banco de dados armazenado em um servidor remoto influencia neste INSERT?- Editado Leandro de Menezes da Silva quarta-feira, 9 de abril de 2014 21:46 Melhor compreensão
-
Leandro,
Normalmente o "erro 21" é indicado quando um dispositivo/diretório não foi encontrado ou quando um usuário não possui acesso.
Realmente você fez uma boa citação, você deve inserir apenas os arquivos armazenados no mesmo servidor do SQL e com os devidos acessos de leitura no diretório definido para obter o(s) arquivo(s).
Apenas como teste, insira o usuário "Everyone" do seu Windows com acesso neste diretório "D:\temp\".
Não esqueça de marcar como resposta todos os posts que ajudaram na sua solução !
Abraços,
Durval RamosMicrosoft Partner | MTA | MCSA - SQL Server 2012---------------------------------- Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"- Marcado como Resposta Leandro de Menezes da Silva quinta-feira, 10 de abril de 2014 17:42
-