Il carattere apice singolo ' nelle istruzioni SQL server per delimitare i valori stringa associati ai campi relativi.
Esempio:
codice:
UPDATE tabella1 SET campoNome = 'Alessio' WHERE campoID = 1
Se per caso, al posto di Alessio, ci sta una stringa del tipo D'Alessio
codice:
UPDATE tabella1 SET campoNome = 'D'Alessio' WHERE campoID = 1
L'apice singolo tra la D e la A chiuderebbe il valore da associare a campoNome con il risultato che il resto della parola Alessio diventerebbe istruzione SQL. Siccome, nel caso specifico, la parola Alessio non è linguaggio SQL, questo genererebbe un errore.
La soluzione è raddoppiare gli apici singoli all'interno di un valore da associare ad un campo
codice:
UPDATE tabella1 SET campoNome = 'D''Alessio' WHERE campoID = 1
Du apici singoli concatenati, per dirla in breve, in SQL ne rappresentano 1 solo.
Per fare questa operazione in ASP basta fare una replace dell'apice singolo con 2 apici singoli nelle variabili da inserire nella istruzione SQL.
codice:
<%
testo1=Request.Form("testo1")
testo2=Request.Form("testo2")
testo3=Request.Form("testo3")
testo1 = replace(testo1,"'","''")
testo2 = replace(testo2,"'","''")
testo3 = replace(testo3,"'","''")
SQL = "INSERT INTO dati (testo1,testo2,testo3)"
SQL = SQL&"VALUES('"&testo1&"','"&testo2&"','"&testo3&"')"
Conn.Execute(SQL)
Response.Redirect "index.asp"
%>