INTERNET EXPLORER? Ti consiglio di navigare questo sito con Mozilla Firefox oppure con Google Chrome.

Come risolvere il problema dell'apice nelle query in Asp

Siti dinamici con ASP
Impara a creare siti dinamici professionali con ASP

Il linguaggio Sql adopera il carattere singolo apice (') per le variabili di tipo string, ipotizziamo la stringa

SELECT * FROM TabellaUtenti WHERE Cognome = 'Ruggiero';
Col valore passato al campo, in questo caso, non avremo problemi; si consideri adesso la stringa
SELECT * FROM TabellaUtenti WHERE Cognome = 'D'Alessio';
In questo caso abbiamo un apice che fa da incomodo.
La soluzione non è quella di registrare un cognome come D''Alessio per rendere pari i singoli apici e non far verificare problemi.
I problemi si verificherebbero in fase di ricerca, qualora una pagina contenga una QueryString, ad esempio
cerca.asp?Cognome=Ruggiero
Come già detto in questo caso non si verificheranno problemi. Consideriamo adesso la QueryString
cerca.asp?Cognome=D'Alessio
Ecco: arrivati a questo punto qualsiasi DBMS inizierà a scoppiettare peggio della notte di Capodanno!

La soluzione consiste nell'effettuare il replace sul carattere ' all'atto della ricerca; si consideri allo scopo il seguente codice
var Cognome = new String(Request.QueryString("Cognome"));
var ReplaceCognome = Cognome.replace(/'/g,"''");
var Sql = "SELECT * FROM TabellaUtenti WHERE Cognome = '" + ReplaceCognome + "'";
Il ragionamento è estremamente semplice, recupero la QueryString e la memorizzo in una variabile, sulla quale effettuo il replace, memorizzando il nuovo valore (comprensivo del replace sull'apice) in una nuova variabile; a questo punto passo la seconda variabile come parametro di ricerca nella stringa Sql.

IN EVIDENZA

HOT LINKS