none
Problemas gravar imagem no banco sql 2005 RRS feed

  • 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.
    sexta-feira, 13 de novembro de 2009 15:39

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]
    terça-feira, 17 de novembro de 2009 02:33

Todas as Respostas

  • Será que alguém sabe o que eu posso fazer???

    Obrigado mais uma vez...
    sábado, 14 de novembro de 2009 21:07
  • 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!

    segunda-feira, 16 de novembro de 2009 17:48
  • 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]
    terça-feira, 17 de novembro de 2009 02:33