Usuário com melhor resposta
Problemas gravar imagem no banco sql 2005

Pergunta
-
Boa tarde!
Meu problema é o seguinte:
Eu criei uma DLL de acesso ao banco de dados e com alguns métodos que executam as queries no banco, então no meu projeto eu tenho uma tela que recebe uma imagem e preciso gravá-la no banco, só que não necessariamente este campo tem que ser preenchido.
No banco de dados eu utilizei o tipo IMAGE, então quando chamo o metedo e passo a query para executar o INSERT no banco, se a imagem não estiver preenchida, NULL, eu tomo a msg de erro: String or bynary data would be truncated.
Já pesquisei na net, mas não encontrei como passar NULL para uma imagem, já que o tipo IMAGE recebe um array de bytes, já tentei passar SQLByte.NULL, mas não funcionou apresentou o mesmo erro, se alguém puder me ajudar eu agradeço!
Marcus Paulo.
Respostas
-
Marcus
Tente assim:
if (imagem.Length > 0)
cmd.Parameters.Add("@CampoImagem", SqlDbType.Image).Value = imagem;
else
cmd.Parameters.Add("@CampoImagem", SqlDbType.Image ).Value = DBNull.Value ;
onde "imagem" é o seu array de bytes
[]s
Robson Castilho - MCTS .Net 2.0 Windows/Web Applications [Se o post foi útil, não esqueça de marcá-lo. Obrigado]- Marcado como Resposta Marcus Paulo Augusto domingo, 3 de janeiro de 2010 04:35
Todas as Respostas
-
-
Fala Marcus!
Vou tentar te ajudar... vamos lá... não sei como está seu projeto, mas vc pode criar um atributo para passar seu array de bytes como nulo... ai vai depender se vai estar em uma classe ou não. Bem... vc cria um atributo "Nulable" do tipo que está usando e aí quando for fazer seu insert, no caso de estar nulo ele automaticamente grava nulo no banco. Vou te dar um exemplo... veja:
private
Nullable<byte[]> suaImagem;
private Nullable<byte[]> SuaImagem
{
get
{ return suaImagem; }set
{ suaImagem= value; }
}
Preencha este atributo com o seu array de bytes e passe para sua query! Boa sorte! -
Marcus
Tente assim:
if (imagem.Length > 0)
cmd.Parameters.Add("@CampoImagem", SqlDbType.Image).Value = imagem;
else
cmd.Parameters.Add("@CampoImagem", SqlDbType.Image ).Value = DBNull.Value ;
onde "imagem" é o seu array de bytes
[]s
Robson Castilho - MCTS .Net 2.0 Windows/Web Applications [Se o post foi útil, não esqueça de marcá-lo. Obrigado]- Marcado como Resposta Marcus Paulo Augusto domingo, 3 de janeiro de 2010 04:35