Come risolvere il problema dell'apice nelle query in Asp

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

Scritto da Luca Ruggiero nella sezione 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.

I più cliccati della sezione Asp

:: Un semplice form mail in Asp (51.681)

:: Creazione di un Guestbook in Asp (50.782)

:: Creazione di un'area di accesso riservato in Asp (45.422)

:: Connessione ad un database MySql con Asp (25.044)

:: Connessione ad un database Microsoft SQL Server con Asp (24.068)

:: Asp e database (23.123)

:: Differenza tra i metodi get e post e recupero dei dati, attraverso Asp (22.300)

:: Una semplice area di accesso riservato senza DB in Asp (21.383)

:: Riscrivere le URL con Asp (19.743)

:: Creazione di un Sondaggio in Asp (19.100)

IN EVIDENZA
DOWNLOAD