none
Salvar um xmldocument no sql server via stored procedure RRS feed

  • Pergunta

  • Boa noite amigos,

    Criei uma stored procedure para inserir os dados em uma tabela do sql server, porem esta tem uma campo XML e no vb.net utilizo uma variável do tipo xmldocument. Quanto passo o parâmetro (.Parameters.Add(NewSqlParameter("@CampoXML", SqlDbType.Xml)).Value = Var_xmldocumet) a Stored Procedure me retorna a mensagem que não foi possível converter o dado xmldocument em string. Na SP a instrução esta assim:

    INSERT INTO tabela (campoXML) VALUES (@parametroXML).

    O que estou fazendo de errado?

    sexta-feira, 30 de outubro de 2015 21:26

Respostas

Todas as Respostas

  • Tenta Boa noite Wander,

    Tenta passar o seu parametro no VB.Net assim colocando um InnerText no final, assim:

    Var_xmldocumet.InnerText

    não lembro se é InnerText() ou só InnerText, tenta esses dois.

    Se der certo, marca a resposta como correta pra finalizar o tópico!

    Abraços

    sexta-feira, 30 de outubro de 2015 22:00
  • Wander, olha essa solução, clique aqui!


    sexta-feira, 30 de outubro de 2015 22:06
  • Diego, boa tarde

    Utilizando xmldocument.outerxml, o sql server retorna a mensagem "Erro na linha 1, caractere 38, não é possível alternar a codificação.

    terça-feira, 3 de novembro de 2015 14:48
  • a linha que retorna o erro é essa:

    <?xml version="1.0" encoding="UTF-8"?>

    terça-feira, 3 de novembro de 2015 15:16
  • Wander, exclui essa linha no ato de incluir no banco e testa, por favor!
    terça-feira, 3 de novembro de 2015 15:59
  • Agora passou a dar erro em outra linha, conversão de data em cadeia de caracteres. A questão é o seguinte que achei melhor gravar todo arquivo XML (Nota fiscal eletrônica) em um campo do que ter várias tabelas com dezenas de campos. A questão que estou percebendo que o SQL Server antes de gravar o campo faz uma análise de todo XML. Mas qual é o critério (schema) que utiliza? Pois só informei o xmldocument?
    terça-feira, 3 de novembro de 2015 16:13
  • Wander, tenho uma aplicação aqui e tudo está correto, mesmo com campos data, porém reparei que está inserindo com encoding diferente...tenta adicionar a primeira linha novamente porém dessa forma:

    <?xml version='1.0' encoding='ISO-8859-1' ?>

    terça-feira, 3 de novembro de 2015 16:29
  • Também não funcionou, e outra questão por ser uma obrigação legal em guardar o arquivo original, não poderei alterar o conteúdo do arquivo, tenho que salvá-lo da maneira que vem.
    terça-feira, 3 de novembro de 2015 16:53
  • Bom de fato se trocar a pagina de código (encoding)  funciona, porém eu necessito guardar exatamente como o original, não teria uma forma de codificar para gravar e decodificar na leitura?
    terça-feira, 3 de novembro de 2015 21:44
  • Já ia me esquecendo, também possui uma outra questão, quando executo o sp o sql coloca um 'N' na variável escalar, por exemplo:

    @var1 =N'informacao'

    Como ajustar o Sql para não colocar esse "N" automaticamente, pois com ele me gera um outro erro.

    terça-feira, 3 de novembro de 2015 21:47