Resolver problemas com apostrofe ou aspas
Como resolver problemas com apóstrofes (“) ou aspas(') em uma declaração SQL? Essa é umas das perguntas mais freqüentes em fórum de discussão sobre ASP e Banco de Dados.
O apóstrofo e as Aspas são caracteres ilegais na linguagem T-SQL porque é interpretado como um delimitador de série para permitir a inserção de um novo registro no Banco de Dados,
No entanto, se você tem um formulário ou QueryString onde receberá um certo tipo de dado e depois registrar esses dados no banco de dados é necessário criar uma rotina para remoção desses caracteres,
Um exemplo - se em um formulário onde usuário preenche campo nome com os seguintes valores (Marco D’Alberto ou Adriano “Rosa”), você terá alguns problemas para executar a inserção desses valores,
Para isso utilize uma função Replace ou Expressão Regular para substituir esses caracteres Especiais, de modo que não afete o resultado final da coleta destes dados.
Uma demonstração de forma simples de uma função para substituir esses caracteres, mas existem diversas funções bem mais complexas onde é possível até se prevenir contra ataques de SQL-INJECTION não irei abordar este assunto neste artigo. Em um próximo artigo falarei como se prevenir de Injeção SQL.
<%
texto1 = "texto com (') e ("")"
Function sEncode(str)
strChr = Replace(str,"""",""",1,-1,0)
strChr = Replace(str,"'","’",1,-1,0)
sEncode = strChr
End Function
With Response
.Write ("INSERT tabela (campo1)VALUES(" & sEncode(texto1) & ")")
End With
%>
output:
INSERT tabela (campo1)VALUES(texto com (&rsquo;) e ("))