none
MySQL Exception (C# .Net Core) - Aspas simples e duplas na query RRS feed

  • Pergunta

  • Bom dia, pessoal! Então, eu tenho uma plataforma Web em Asp .NET Core e um usuário me reportou o erro que aparece na imagem. Segundo ele, estava editando um campo de texto e quando foi gravar gerou o erro. Ele disse que tinha uns caracteres especiais no texto, ai quando ele retirou foi que conseguiu gravar sem problemas. Não consegui reproduzir o erro e nem achei nenhuma documentação para auxililar. Alguém já passou por isso?


    Se o post foi util, num esquece daquele joinha ;)


    segunda-feira, 4 de março de 2019 12:15

Respostas

  • Amigo, pelo erro retornado, o problema esta na montagem da query, e ai que esta o problema, exemplo, se a pessoa for gravar uma string no banco com o update abaixo:

    update usuario set nome='fulano da s'ilva' where id=88

    Ocorreria o mesmo erro reportado por você, já que a "aspas" determina o inicio e fim do valor que esta sendo salvo.
    Estou dando um exemplo simples baseado em SQL Server, mas por o banco MariaDB que me parece ser o utilizando por vocês por ser que utilize outro caractere chave.

    segunda-feira, 4 de março de 2019 18:03

Todas as Respostas

  • Amigo, pelo erro retornado, o problema esta na montagem da query, e ai que esta o problema, exemplo, se a pessoa for gravar uma string no banco com o update abaixo:

    update usuario set nome='fulano da s'ilva' where id=88

    Ocorreria o mesmo erro reportado por você, já que a "aspas" determina o inicio e fim do valor que esta sendo salvo.
    Estou dando um exemplo simples baseado em SQL Server, mas por o banco MariaDB que me parece ser o utilizando por vocês por ser que utilize outro caractere chave.

    segunda-feira, 4 de março de 2019 18:03
  • É, também achei que poderia ser isso! Vou parametrizar a query e ver se resolve o problema!

    Se o post foi util, num esquece daquele joinha ;)

    quarta-feira, 6 de março de 2019 16:58
  • O problema realmente era na query. Testei colocando aspas simples e duplas no campo de texto do formulário e deu o mesmo erro.

    Tentei algumas formas de fazer as aspas entrarem query sem causar problemas, porém não tive sucesso. O jeito foi fazer uma substituição à mão mesmo:

    Descricao.Replace("\r\n", "\\n").Replace("'", "&apos").Replace(@"""", "&aspas")

    Na hora de recuperar do banco de dados faço o processo ao contrário e tudo fica OK. Na minha ocasião só havia problemas com esses caracteres especiais, então essa solução até que caiu bem. No entanto, acredito que dá para implementar de uma forma mais inteligente!


    Se o post foi util, num esquece daquele joinha ;)

    quinta-feira, 7 de março de 2019 16:12