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

Inserimento sicuro di dati sul database con Asp

Autore: Luca Ruggiero | Tell a Friend

eBook ASP base
Impara a creare siti dinamici con ASP e VBScript da zero!

Corso ASP
Impara a creare siti dinamici professionali con ASP!

E-Commerce con ASP
Impara a creare un sito di E-Commerce con carrello della spesa!

Utilizzando una stringa Sql per inserire dati su un database, quindi non demandando il compito all'oggetto Recordset, è bene controllare che il flusso del programma sia corretto, onde evitare di incappare in errori di varia natura.

Si crei il file Access database.mdb e la tabella utenti con i campi id (contatore), nome e cognome (entrambi di tipo testo).

Il codice che segue, ben commentato, illustra un esempio:

<%@LANGUAGE = JScript%>
<%
    // RECUPERO I DATI DA INSERIRE ED EFFETTUO IL REPLACE DEL CARATTERE APICE (')
    var nome = "Luca".replace(/'/g, "''");
    var cognome = "Ruggiero".replace(/'/g, "''");

    // DICHIARO UNA VARIABILE CHE CONTERRA' IL MESSAGGIO DA RESTITUIRE ED UNA PER LA STRINGA SQL
    var messaggio = "";
    var SQL = "INSERT INTO utenti (nome, cognome) VALUES ('" + nome + "', '" + cognome + "')";

    // APRO LA CONNESSIONE
    var Cn = new ActiveXObject("ADODB.Connection");
    Cn.Open("driver={Microsoft Access Driver (*.mdb)};dbq=" + Server.MapPath("database.mdb"));

    // INIZIO LA TRANSAZIONE DEI DATI
    Cn.BeginTrans();

    try
    {
        // SE TUTTO VA A BUON FINE ESEGUO L'INSERIMENTO E SALVO L'OPERAZIONE
        Cn.Execute(SQL);
        Cn.CommitTrans();
        messaggio += "Inserimento effettuato con successo";
    }
    catch (e)
    {
        // IN CASO CONTRARIO BLOCCO LA TRANSAZIONE
        Cn.RollbackTrans();
        messaggio += "Errore durante un tentativo di inserimento";
    }
    finally
    {
       // COMUNQUE VADANO LE COSE CHIUDO LA CONNESSIONE
        Response.Write(messaggio);
        Cn.Close();
    }
%>
L'esempio vede coinvolti i metodi BeginTrans(), CommitTrans() e RollbackTrans() dell'oggetto Connection i cui compiti sono rispettivamente: aprire una transazione, salvare o respingere la transazione a seconda di errori, come eventualmente potrebbe verificarsi nel caso esposto, oppure a seconda di condizioni imposte dallo sviluppatore.

IN EVIDENZA
HOT LINKS