Morpheusweb.it - Risorse per webmaster: script, ASP.NET, C#, Visual Basic .Net, tutorial, asp, javascript, css, php, html, java, ADO, VBScript, forms, frames, Active Server Pages, Dynamic HTML, database, gratis per webmaster e webdesigner

VBScript Transactions: Vediamo come implementare le transazioni SQL in ASP

Transactions


Introduzione

Le transazioni sono un meccanismo per mantenere l'integrità dei dati nei database transazionali come SQL Server. E' possible utilizzarle in ASP in modo abbastanza semplice.

Cosa sono le transazioni

In SQLServer, Quando eseguiamo una serie di query all'interno di una transazione, abbiamo la possibilità di eseguirle tutte (effettuare il commit) oppure nessuna (un rollback della transazione)

Una transazione SQLServer ha la seguente forma:

begin transaction
query 1
query2
...
query n
commit (oppure rollback)

E' possibile implementare le transactions in asp utilizzando MTS (Microsoft's answer to transactions).

Utilizzo delle transazioni

Le transactions possono risultare utili per evitare l'inserimento dei dati quando una delle query che stiamo eseguendo genera un errore.
Possiamo utilizzare l'oggetto Err per capire se si sono verificati errori ed eseguire il rollback, oppure, se non si sono verificati errori fare il commit e salvare i dati su database.

Implementare le transazioni in ASP

Per utilizzare le transactions in ASP occorre inserire una direttiva nelle nostre pagine che ne fanno uso.

<%@ TRANSACTION = proprieta %>

La proprietà può assumere uno dei valori riassunti nella tabella in basso.

Proprietà Descrizione
Requires_New La pagina crea sempre una nuova transazione
Required La pagina crea una transazione se non ne trova una attiva, altrimenti usa quella che trova.
Supported La pagina utilizza le transazioni attive ma non ne può creare di sue.
Not_Supported Le transazioni non sono supportate


Anche se in genere utilizzeremo le transazioni in un unica pagina asp, è possibile realizzare transazioni che "durano" per più pagine, pensiamo ad esempio ad un wizard in cui vogliamo salvare i dati su database soltanto se abbiamo compilato correttamente tutti i campi di una serie di form uno dopo l'altro.
Con "Transaction = Supported", possiamo far si che la transazione continui quando si passa da una pagina all'altra.

Commit e Rollback delle transazioni

Creata la transazione abbiamo due metodi per eseguire il commit oppure il rollback della transazione.

ObjectContext.SetComplete

esegue il commit

ObjectContext.SetAbort

per il rollback

Abbiamo inoltre due eventi che vengono scatenati dalle due funzioni

Sub OnTransactionCommit()
'codice
End Sub

viene eseguita in caso di commit

Sub OnTransactionAbort()
'codice
End Sub

viene eseguita in caso di rollback

Esempio

Visti i comandi base, vediamo come utilizzarli in un caso concreto

<%@ LANGUAGE="VBSCRIPT" CODEPAGE="1252" TRANSACTION=Required %>
<%
On Error Resume Next

Set connDB = Server.CreateObject("ADODB.CONNECTION")
connDB.ConnectionTimeout = 0
connDB.Open "DSN=DATASOURCE"

' qui eseguo una serie di operazioni, ad esempio inserimenti su database
connDB.Execute("insert into table (nome,cognome) values ('paloino','paperino')")
connDB.Execute("insert into table (nome,cognome) values ('paperon','de paperoni')")

'controllo se ci sono stati errori
If err.number > 0 Then
  ObjectContext.SetAbort
Else
  ObjectContext.SetComplete
End If

Sub
OnTransactionCommit()
  response.write("errore nell'inserimento")
End Sub

Sub
OnTransactionAbort()
  response.write("dati inseriti")
End Sub
%>



Stampa la pagina


 

Inizio pagina

risorse per webmaster