Inquiridor
Erro inserindo string com aspas simples no meio

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
Todas as Respostas
-
-
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.
-
-
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
- Sugerido como Resposta Olavo Oliveira NetoModerator terça-feira, 10 de julho de 2012 11:52