none
Erro inserindo string com aspas simples no meio RRS feed

  • Pergunta

  • Olá a todos/as,

    quero inserir o conteúdo de um gridview numa tabela.

    o problema é que, se o registro de algum campo tiver uma aspas simpes no meio da string, por exemplo: caixa d'agua, dá erro dizendo que a string não foi terminada corretamente.

    eu tenho como retirar esta aspas simples da string pelo código? tipo um replace ou algo do tipo?

    seque o código onde eu monto a query.

    string sqlinset = "insert into tbl_not_nova(COD_SAP, RAZAO_SOCIAL, NOME_FANTASIA, CNPJ)" +
    " values (TRIM(both ' ' from '" + GVParceirosImportados[0, i].Value.ToString() + 
    "'),TRIM(both ' ' from '" + DGVParceirosImportados[1, i].Value.ToString() + 
    "'),TRIM(both ' ' from '" + DGVParceirosImportados[2, i].Value.ToString() + 
    "'),TRIM(both ' ' from '" + DGVParceirosImportados[3, i].Value.ToString() + 
    "')" + ")";

    obrigado

    quinta-feira, 21 de junho de 2012 19:47

Todas as Respostas

  • Sim João.. você pode fazer :

    var nome = "''mur''ilo'''".Replace("\'", "");


    http://www.linkedin.com/pub/murilo-kunze/44/191/455

    quinta-feira, 21 de junho de 2012 20:39
  • Então... o negócio é o seguinte:

    eu quero pegar uma planilha do excel e gravar no banco, mas quando um campo tem um registro com aspas no meio, dá erro.

    o banco entende que aquela aspas está fechando a string, mas na verdade não está...

    eu leio a planilha, e coloco o conteúdo numa gridview, depois pego cada linha da gridview e gravo no banco...

    mas quando chega nessa linha dá o erro...

    não consegui resolver ainda.

    quinta-feira, 21 de junho de 2012 21:14
  • Acho que entendi.. faz o contrário então:

    var nome = "''mur''ilo'''".Replace("'", "\\'");


    http://www.linkedin.com/pub/murilo-kunze/44/191/455

    sexta-feira, 22 de junho de 2012 01:24
  • Olá João, voce pode usar o comando sql com parametros. Em vez de concatenar strings para formar o seu insert, declare ele assim:

    string sqlinset = "insert into tbl_not_nova(COD_SAP, RAZAO_SOCIAL, NOME_FANTASIA, CNPJ) values (@COD_SAP, @RAZAO_SOCIAL, @NOME_FANTASIA, @CNPJ);

    Depois voce adiciona os parametros no seu SQLCommand, assumindo que o seu comando se chame cmd:

    cmd.AddWithValue("@COD_SAP", GVParceirosImportados[0, i].Value.ToString()); cmd.AddWithValue("@RAZAO_SOCIAL", DGVParceirosImportados[1, i].Value.ToString()); cmd.AddWithValue("@NOME_FANTASIA", DGVParceirosImportados[2, i].Value.ToString()); cmd.AddWithValue("@CNPJ", DGVParceirosImportados[3, i].Value.ToString());

    Assim você evita esse tipo de erro. Acostume-se a usar comandos com parãmetros pois eles te protegem de ataques de sql injection.

    Perceba que a sua string do insert fica mais legível e mais fácil de alterar também.

    []s

    Guilherme Pendezza de Sousa

    sábado, 7 de julho de 2012 02:52