Corso basi di dati ASP e i database



Documenti analoghi
Accesso a basi di dati con ASP. Algoritmo per visualizzare un DB

MDAC. Attualmente la versione disponibile di MDAC è la 2.8 ma faremo riferimento alla 2.6. ADO Active Data Objects ADO OLE DB ODBC

APPUNTI SU ADO (ACTIVEX DATA OBJECTS)

LEGGERE E VISUALIZZARE I DATI DI UNA TABELLA IN UNA PAGINA WEB

LEGGERE E VISUALIZZARE I DATI FILTRATI E CALCOLATI DI UNA TABELLA IN UNA PAGINA WEB

Uso dei data bases con PHP. Prof. Francesco Accaino Iis Altiero Spinelli Sesto Sa Giovanni

19. LA PROGRAMMAZIONE LATO SERVER

Manuale di ASP

VBScript. VBScript. Visual Basic Scripting Edition. Linguaggio di script per browser e server Microsoft Deriva da Visual Basic, ma è interpretato

ACTIVE SERVICE PAGES E DATABASE: tecnologia ADO

ACTIVE SERVICE PAGES E DATABASE: tecnologia ADO

Data Base in Internet

Corso di Informatica Modulo T3 B2 - Database in rete

Lezione 9. Applicazioni tradizionali

Guida alla registrazione on-line di un DataLogger

Dispensa di database Access

ASP: DOMANDE E RISPOSTE (Q&A)

Data Base. Master "Bio Info" Reti e Basi di Dati Lezione 6

Access. Microsoft Access. Aprire Access. Aprire Access. Aprire un database. Creare un nuovo database

Capitolo 13. Interrogare una base di dati

FPf per Windows 3.1. Guida all uso

Manuale Amministratore Legalmail Enterprise. Manuale ad uso degli Amministratori del Servizio Legalmail Enterprise

MANUALE D'USO DEL PROGRAMMA IMMOBIPHONE

Uso delle basi di dati DBMS. Cos è un database. DataBase. Esempi di database

Database 1 biblioteca universitaria. Testo del quesito

Che cos'è un modulo? pulsanti di opzione caselle di controllo caselle di riepilogo

Access. P a r t e p r i m a

Mac Application Manager 1.3 (SOLO PER TIGER)

Abilità Informatiche A.A. 2010/2011 Lezione 9: Query Maschere Report. Facoltà di Lingue e Letterature Straniere

EXCEL PER WINDOWS95. sfruttare le potenzialità di calcolo dei personal computer. Essi si basano su un area di lavoro, detta foglio di lavoro,

Excel. A cura di Luigi Labonia. luigi.lab@libero.it

Manuale per la configurazione di AziendaSoft in rete

Basi di dati. Il Linguaggio SQL. K. Donno - Il Linguaggio SQL

CORSO ACCESS PARTE II. Esistono diversi tipi di aiuto forniti con Access, generalmente accessibili tramite la barra dei menu (?)

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena

Manuale Utente MyFastPage

Interfaccia di base di GroupWise WebAccess

Applicazione ASP di esempio

GESGOLF SMS ONLINE. Manuale per l utente

Lezione II: Web server e ambiente di lavoro

Esercizio data base "Biblioteca"

Il sofware è inoltre completato da una funzione di calendario che consente di impostare in modo semplice ed intuitivo i vari appuntamenti.

Concetti fondamentali dei database database Cos'è un database Principali database

Sistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory

Riccardo Dutto, Paolo Garza Politecnico di Torino. Riccardo Dutto, Paolo Garza Politecnico di Torino

Database e reti. Piero Gallo Pasquale Sirsi

Esercitazione 4 JDBC

1.0 GUIDA PER L UTENTE

I file di dati. Unità didattica D1 1

GRUPPO CAMBIELLI. Posta elettronica (Webmail) Consigli di utilizzo

La tecnologia ASP.NET e i database

SOSEBI PAPERMAP2 MODULO WEB MANUALE DELL UTENTE

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti

A destra è delimitata dalla barra di scorrimento verticale, mentre in basso troviamo una riga complessa.

NAVIGAORA HOTSPOT. Manuale utente per la configurazione

Introduzione ai database relazionali

Banca dati Professioniste in rete per le P.A. Guida all uso per le Professioniste

MANUALE D USO DELLA PIATTAFORMA ITCMS

Lezioni di Laboratorio sui Data Base

DBMS. Esempi di database. DataBase. Alcuni esempi di DBMS DBMS. (DataBase Management System)

PROGRAMMA GESTIONE TURNI MANUALE UTENTE. Programma Gestione Turni Manuale Utente versione 1.1

Capitolo 4 Pianificazione e Sviluppo di Web Part

Sistema Informativo Gestione Fidelizzazione Clienti MANUALE D USO

Il sistema C.R.M. / E.R.M.

Organizzazione degli archivi

Esercitazione query in SQL L esercitazione viene effettuata sul database viaggi e vacanze che prevede il seguente modello E/R:

OSSIF WEB. Manuale query builder

STAMPA UNIONE DI WORD

Telerilevamento e GIS Prof. Ing. Giuseppe Mussumeci

GERARCHIE RICORSIVE - SQL SERVER 2008

LA GESTIONE DELLE VISITE CLIENTI VIA WEB

ATOLLO BACKUP GUIDA INSTALLAZIONE E CONFIGURAZIONE

DBMS (Data Base Management System)

SharePoints è attualmente disponibile in Inglese, Italiano e Francese.

Microsoft Access. Microsoft Access

Informatica Generale Andrea Corradini Sistemi di Gestione delle Basi di Dati

ASP: ESERCIZI E SOLUZIONI

SCARICO DATI ONETOUCH Verio per EuroTouch Home GUIDA ALL USO

filrbox Guida all uso dell interfaccia WEB Pag. 1 di 44

Cosa è un foglio elettronico

File, Modifica, Visualizza, Strumenti, Messaggio

Obiettivi d esame PHP Developer Fundamentals on MySQL Environment

Il calendario di Windows Vista

Entrare nel sistema. Clicca su Entra per entrare nel sistema. PAGINA 1

Regione Toscana. ARPA Fonte Dati. Manuale Amministratore. L. Folchi (TAI) Redatto da

Airone Gestione Rifiuti Funzioni di Esportazione e Importazione

Come modificare la propria Home Page e gli elementi correlati

Raggruppamenti Conti Movimenti

Consiglio regionale della Toscana. Regole per il corretto funzionamento della posta elettronica

2 Fortino Lugi. Figura Errore. Nel documento non esiste testo dello stile specificato Finestra attiva o nuovo documento

RE ON/OFF-LINE. L APP funziona su tutti i sistemi operativi Windows e, come applicazione desktop, su Windows 8 (non per Windows RT).

Database. Si ringrazia Marco Bertini per le slides

e/fiscali - Rel e/fiscali Installazione

Il linguaggio SQL. è di fatto lo standard tra i linguaggi per la gestione di data base relazionali.

CdL in Medicina Veterinaria - STPA AA

Progetto: ARPA Fonte Dati. ARPA Fonte Dati. Regione Toscana. Manuale Amministratore

per immagini guida avanzata Uso delle tabelle e dei grafici Pivot Geometra Luigi Amato Guida Avanzata per immagini excel

Transcript:

Corso basi di dati ASP e i database Gianluca Di Tomassi Email: ditomass@dia.uniroma3.it Università di Roma Tre ASP e i database Un ruolo senza dubbio rilevante di ASP è quello di mediatore tra Web server e un sistema di gestione di database Grazie ad ActiveX Data Object (ADO) è possibile accedere a qualsiasi database ODBC o OLEDB compatibile, usufruendo dei vantaggi che questa tecnologia offre, tra i quali la semplicità di accesso ai dati e l indipendenza dell applicazione dal tipo di database. Corso basi di dati - ASP e i database ditomass@dia.uniroma3.it 2 1

Cosa vuole il sito dal DB? Ci sono essenzialmente quattro tipologie d uso per basare un sito su un DB: pubblicazione di dati condivisione dei dati applicazioni tipo commercio elettronico aggiornamento delle pagine Corso basi di dati - ASP e i database ditomass@dia.uniroma3.it 3 Pubblicazione di dati Il fine è quello di agevolare l accesso a grosse quantità di dati. Caratteristiche: il DB è grande spesso il DB è preesistente interrogazioni in parte generate dagli utenti risultati non noti a priori gestione degli errori Corso basi di dati - ASP e i database ditomass@dia.uniroma3.it 4 2

Condivisione di dati La quantità dei dati gestiti è piccola Caratteristiche: DB semplice, i record contengono tipicamente un campo informativo e vari campi ausiliari interrogazioni semplici, prevedibili e realizzabili in modo non parametrico Corso basi di dati - ASP e i database ditomass@dia.uniroma3.it 5 Applicazioni di tipo e-commerce Raccolgono il peggio dei due casi precedenti Caratteristiche: Sicurezza gestione di transazioni a prova di disastro Corso basi di dati - ASP e i database ditomass@dia.uniroma3.it 6 3

Aggiornamento delle pagine Il DB è invisibile all utente Caratteristiche: efficienza fondamentale libertà di progetto il DB non deve apparire in nessun modo Corso basi di dati - ASP e i database ditomass@dia.uniroma3.it 7 In generale Necessità di un DB veloce e affidabile Le interrogazioni normalmente non sono molto complesse L uso che si fa del DB è abbastanza primitivo Bisogna preoccuparsi dell interazione col server Web e della sicurezza Corso basi di dati - ASP e i database ditomass@dia.uniroma3.it 8 4

SQL e Web Il meccanismo fondamentale delle applicazioni basate su SQL è: trova tutti i record che sono, Per ciascuno di essi, fagli qualcosa Sul Web questo si trasforma nella specificazione di un interrogazione e nella generazione di una stringa HTML per la visualizzazione dei record del risultato Corso basi di dati - ASP e i database ditomass@dia.uniroma3.it 9 Cursori Sono costrutti SQL che implementano la logica precedente L apertura del cursore è l operazione più pesante Bisogna tenerne conto nella progettazione del sito Interrogazioni C è bisogno delle interrogazioni L interrogazione è ciò che connette il mondo Web col mondo DB Corso basi di dati - ASP e i database ditomass@dia.uniroma3.it 10 5

Programmazione di un DB e Web Il processo di generazione delle pagine dinamiche richiede che tutta l informazione per l interrogazione sia nota a priori L informazione deve essere inoltre compatibile con la natura del DB Corso basi di dati - ASP e i database ditomass@dia.uniroma3.it 11 ODBC, IDC e ASP Introdotta dalla Microsoft nel 1991, l interfaccia ODBC permette di far interagire DBMS, sistemi operativi e protocolli di rete anche diversi tra loro. OBIETTIVO: Interazione con i DBMS tramite un browser. SOLUZIONE MICROSOFT: MS Web Server, con possibilità di utilizzare: L interfaccia ODBC Tecnologia IDC (Internet Database Connector) Introduzione di ASP (alternativa ai programmi CGI) Corso basi di dati - ASP e i database ditomass@dia.uniroma3.it 12 6

IDC Internet Database Connector è uno strumento che può essere utilizzato per spedire queries ad un database e formattare i dati che ritornano, in una pagina HTML. 1. I Web browser inviano richieste ai server Internet utilizzando il protocollo HTTP 2. I Web server rispondono alle interrogazioni con documenti HTML grazie proprio a IDC Corso basi di dati - ASP e i database ditomass@dia.uniroma3.it 13 IDC utilizza due tipi di file per controllare l'accesso al database e la generazione del documento HTML di risposta: 1. File.idc Internet Database Connector che contengono le informazioni necessarie per connettersi all'appropriato ODBC data source e consentire l'esecuzione di istruzioni SQL. Le informazioni sul nome e la locazione del file HTML. 2. File.htx HTML extension che contengono i template per il documento HTML che viene restituito al Web browser dopo che i dati spediti hanno interagito con il database attraverso IDC. Per usare IDC lo strumento è ASP, il quale nasconde sia all utente che al programmatore la struttura e la costruzione dei file.idc e.htx. Corso basi di dati - ASP e i database ditomass@dia.uniroma3.it 14 7

Interfaccia ODBC All interno del pannello di controllo occorre selezionare la voce Origine Dati ODBC (Open Database Connectivity) Corso basi di dati - ASP e i database ditomass@dia.uniroma3.it 15 e selezionare poi il foglio DSN System I DSN sono nomi virtuali che ADO usa per associare a ogni database utilizzato, un indirizzo fisico sull hard disk. I DSN possono essere di tre tipi: 1. di sistema; associa un nome a i database presenti sulla macchina con cui si sta lavorando 2. di file; permette di associare un nome ad un database, associandolo anche ad un file che può essere presente o meno sulla macchina (ad esempio un database condiviso in una rete intranet) 3. di utente; fornisce una lista di tutti i driver ODBC installati Corso basi di dati - ASP e i database ditomass@dia.uniroma3.it 16 8

Dopo aver premuto il tasto aggiungi occorre selezionare il driver per il database che si sta utilizzando e premere fine. A questo punto appare l ultima schermata, quella che ci chiederà il DSN da associare e il percorso dove si trova il database da leggere. Corso basi di dati - ASP e i database ditomass@dia.uniroma3.it 17 Accedere ai dati con ASP Per utilizzare i driver ODBC, ASP si serve della tecnologia ADO (ActiveX Data Objects) sviluppata da Microsoft per il suo linguaggio ActiveX. Tramite ADO è comunque possibile connettere una applicazione anche a database non ODBC compatibile quali ad esempio OLE DB (Object Linking and Embedding Database). Per identificare il database su cui lavorare, gli script ADO hanno bisogno che sia specificato un DSN (Data Source Name) che, come già detto, univocamente specifichi il nome e il "luogo fisico" dove il database si trova. Corso basi di dati - ASP e i database ditomass@dia.uniroma3.it 18 9

Modello ADO Il modello ADO contiene sei oggetti: Connection: Recordset: Error: Field: Command: Parameters: consente di stabilire la connessione all origine dei dati consente di operare con i dati contenuti in una tabella (contiene un insieme di righe di una tabella). Può essere usato per leggere o modificare le righe di una tabella o per raccogliere nuovi dati da aggiungere alla tabella rappresenta un errore generato dall origine dati rappresenta una singola colonna in una tabella fornisce un altro modo per creare l oggetto Recordset (combina l oggetto Recordset e Connection) contiene tutti i parametri necessari al comando Corso basi di dati - ASP e i database ditomass@dia.uniroma3.it 19 Gli oggetti ADO più importanti Connection: la connessione a una sorgente dati Recordset: un cursore sul risultato di una query Field: i dati di una singola colonna corredati di informazioni Accedere a un database 1. Aprire una connessione 2. Creare un recordset 3. Estrarre i dati dai campi dei record 4. Chiudere il recordset e la connessione Corso basi di dati - ASP e i database ditomass@dia.uniroma3.it 20 10

Aprire una connessione I metodi più usati: e semplici sono quelli che sfruttano il driver ODBC perché è facile configurare una sorgente ODBC è possibile spostare la posizione del database senza intervenire sul codice ASP è portabile indipendentemente dall architettura utilizzata Corso basi di dati - ASP e i database ditomass@dia.uniroma3.it 21 Connessione a un database Prima di utilizzare il database è necessario collegarsi Analogia: Per effettuare una chiamata telefonica non è sufficiente alzare la cornetta. Occorre prima comporre il numero e, poi attendere che la società telefonica esegua tutte le connessioni corrette per inoltrare la chiamata alla destinazione desiderata. L oggetto Connection è usato per contenere le informazioni del database al quale si vuole accedere Dim objconn Set objconn = Server.CreateObject( ADODB.Connection ) Corso basi di dati - ASP e i database ditomass@dia.uniroma3.it 22 11

Uso di connessione senza DSN (continua ) objconn.connectionstring= DRIVER = Microsoft Access Driver _ (*.mdb) ; & DBQ=C:\Cartella\mioDB.mdb DRIVER Comunica all oggetto Connection il tipo di database della connessione DBQ UID PWD Indica il percorso del database sul server. (in alternativa può essere utilizzato Server.MapPath Username per accedere al database Password per accedere al database Corso basi di dati - ASP e i database ditomass@dia.uniroma3.it 23 Uso di connessione senza DSN Se si vuole effettuare una connessione diretta OLEDB allora la stringa di connessione sarà la seguente: Provider=Microsoft.Jet.OLEDB.3.51; Data Source=path_mio_database Uso di connessione con DSN Dopo aver configurato un nuovo DSN è possibile effettuare una connessione semplicemente facendo riferimento al nome del DSN objconn.connectionstring = DSN=mioDB.dsn Corso basi di dati - ASP e i database ditomass@dia.uniroma3.it 24 12

Come stabilire la connessione Si utilizza il metodo Open dell oggetto Connection <% Dim objconn Set objconn = Server.CreateObject("ADODB.Connection") objconn.connectionstring = "DSN=mioDB.dsn" objconn.open %> Solitamente queste istruzioni vengono inserite in un file che viene incluso da tutte le pagine che richiedono accessi al db Corso basi di dati - ASP e i database ditomass@dia.uniroma3.it 25 Apertura della connessione La connessione avviene usando l oggetto ADODB.Connection Set objconn = Server.CreateObject("ADODB.Connection") objconn.open(sorgentedatiodbc) Set objrs = objconn.execute(querysql) Con il metodo connessione.open apriamo materialmente la comunicazione con il database che si trova sul server. Con il metodo connection.execute definiamo il cursore tramite l interrogazione SQL specificata (sia essa INSERT, UPDATE, DELETE). Corso basi di dati - ASP e i database ditomass@dia.uniroma3.it 26 13

La proprietà ConnectionString può essere evitata passando le informazioni direttamente al metodo Open secondo la sintassi: objconn.open strconnectioninfo,strusername,strpassword Come chiudere la connessione Come tutti gli oggetti al termine del loro utilizzo si deve liberare la memoria ma solo dopo aver chiuso la connessione Analogia: Liberare un oggetto Connection senza chiuderlo è come allontanarsi dal telefono senza agganciare il ricevitore objconn.close Set objconn = Nothing Corso basi di dati - ASP e i database ditomass@dia.uniroma3.it 27 Proprietà della connessione Esiste una collection nell oggetto Properties che contiene un istanza dell oggetto Property per ogni proprietà supportata dalla connessione Esempio: <% Option Explicit %> <HTML><BODY> <!--#include file="databaseconnect.asp"--> <!--#include virtual="/adovbs.inc"--> <% Dim objprop For Each objprop in objconn.properties Response.Write objprop.name & ": " & objprop.value & "<BR>" Next objconn.close Set objconn = Nothing %> </BODY></HTML> Corso basi di dati - ASP e i database ditomass@dia.uniroma3.it 28 14

Esempio apertura della connessione <% Response.Expires = 0 Option Explicit 1. Dim objconn, objrs, strquery, strconnection 2. Set objconn = Server.CreateObject("ADODB.Connection") 3. strconnection = "DSN=Northwind;Database=Northwind; 4. strconnection = strconnection & "UID=sa;PWD=; 5. objconn.open strconnection Nel... punto 1. Vengono dichiarate le variabili che si utilizzeranno; Nel punto 2. Viene creato un oggetto ADODB.Connection Nel punto 3. e 4. viene definita la stringa per la connessione Nel punto 5. viene aperta materialmente la connessione Corso basi di dati - ASP e i database ditomass@dia.uniroma3.it 29 L oggetto Recordset Può essere usato per contenere un sottoinsieme dei record di una tabella o anche tutti i record di una tabella Per prima cosa occorre istanziare l oggetto Recordset Dim objrs Set objrs = Server.CreateObject( ADODB.Recordset ) La prima istruzione dichiara la variabile che conterrà l oggetto e la seconda lo crea. L oggetto Recordset appartiene al pacchetto ADODB NOTA: La creazione di un istanza dell oggetto non inserisce alcun dato nell oggetto Corso basi di dati - ASP e i database ditomass@dia.uniroma3.it 30 15

Il metodo Open L oggetto RecordSet viene popolato di record con l uso del metodo Open. Open accetta diversi gruppi di argomenti: Recordset.Open source, connection, cursortype, locktype, commandtype Esempio: objrs.open miatabella, objconn,,, adcmdtable adcmdtable vuol dire che la stringa sorgente dovrà assumere il valore del nome della tabella (Quindi se nel db esiste una tabella miatabella indicata dall oggetto Connection chiamato objconn quella tabella sarà copiata nell oggetto Recordset chiamato objrs). All interno di objrs ci si potrà spostare in avanti è possibile eseguire solo letture sul db (Non sono specificati gli argomenti per il tipo di cursore e il tipo di blocco Corso basi di dati - ASP e i database ditomass@dia.uniroma3.it 31 Connessioni implicite Si effettuano mediante l oggetto Recordset Con l oggetto Recordset e con il metodo Open è possibile ottenere una connessione al db senza creare una variabile per contenere un oggetto Connection Dim objrs Set objrs = Server.CreateObject( ADODB.Recordset ) objrs.open = miatabella, strconnect,,, adcmdtable La strconnect contiene le informazioni che dovranno essere inserite nella ConnectionString dell oggetto Connection Svantaggio: La lettura del codice risulta più difficile Corso basi di dati - ASP e i database ditomass@dia.uniroma3.it 32 16

Utilizzo di adovbs.inc Le costanti definite per l oggetto Recordset non sono incluse in ASP E possibile definirle ogni volta che sono necessarie oppure includere il file adovbs.inc che contiene le definizioni per tutte le costanti ADO Viene fornito con IIS e PWS si trova (solitamente) nella cartella c:\program Files\Common Files\System\ado\ Copiare il file nella directory principale del server Web e includerlo nelle pagine dove si utilizzano le costanti <!--#include virtual= /adovbs.inc --> Corso basi di dati - ASP e i database ditomass@dia.uniroma3.it 33 Se non lo trovate non disperate si può creare da zero: Const adopenforwardonly = 0 Const adlockoptimistic = 3 Const adlockpessimistic = 2 Const adlockreadonly = 1 Const adcmdtable = 2 Naturalmente si potrà utilizzare: objrs.open miatabella, objconn, 0, 1, 2 Oppure objrs.open miatabella, objconn, adopenforwardonly, adlockreadonly, adcmdtable Corso basi di dati - ASP e i database ditomass@dia.uniroma3.it 34 17

Apertura di un Recordset Set objconn = Server.CreateObject("ADODB.Connection") objconn.open(sorgentedatiodbc) Set objrs = Server.CreateObject("ADODB.Recordset") objrs.activeconnection = objconn. objconn.open(querysql) Definiamo un oggetto objrs e definiamo i valori per le sue proprietà (ActiveConnection, LockType, CursorType, CursorLocation). Corso basi di dati - ASP e i database ditomass@dia.uniroma3.it 35 Esempio creazione del recordset <%... 'Definisce l'apertura del cursore 1. strquery = "SELECT NomeProdotto, PrezzoUnitario FROM Prodotti" 2. strquery = strquery & "ORDER BY NomeProdotto" Esegue la query e genera il cursore 3. Set objrs = objconn.execute(strquery) %> Nel punto 1. e 2. Viene definita quella che sarà la query da eseguire Nel punto 3. Viene eseguita la query e generato il cursore Corso basi di dati - ASP e i database ditomass@dia.uniroma3.it 36 18

Proprietà di un Recordset CursorLocation: indica dove è memorizzato l oggetto CursorType: indica il tipo di cursore, i metodi e i campi utilizzabili che dipendono dal tipo di recordset definito. LockType: indica il tipo di lock da utilizzare per evitare accessi concorrenti in scrittura sul database N.B. Nel file adovbs.inc sono definite i valori delle costanti da assegnare alle proprietà precedenti Corso basi di dati - ASP e i database ditomass@dia.uniroma3.it 37 CursorLocation aduseclient : indica che l oggetto è memorizzato presso il client e quindi non ha alcun legame con il database di origine. Alleggerisce il database server, ma non consente di effettuare modifiche permanenti sul database. N.B.: in questo caso il client è ADODB ovvero un component di PWS/IIS, quindi l oggetto recordset è trasportato sul server web aduseserver : in questo caso il recordset rimane sul server ed è gestito dal DBMS N.B. In colore rosso sottolineato sono indicati i valori di default assunti dagli attributi del recordset Corso basi di dati - ASP e i database ditomass@dia.uniroma3.it 38 19

CursorType (1) adopenforwardonly : indica che il cursore può essere scandito solo in avanti. Consente un risparmio di memoria e tempo, ma non consente di accedere ai campi: RecordCount : numero di elementi (righe) presenti nel cursore; PageCount : numero di pagine definite nel cursore È solo una copia statica di dati, quindi modifiche effettuate da altri utenti non si propagano all oggetto. Corso basi di dati - ASP e i database ditomass@dia.uniroma3.it 39 CursorType (2) adopenstatic : consente di scorrere il cursore in avanti ed indietro. Consente di accedere ai campi RecordCount e PageCount, ma come il precedente è solo una copia statica di dati, quindi modifiche effettuati da altri utenti non si propagano all oggetto. adopendynamic : consente di scorrere il cursore in avanti ed indietro. Consente di accedere ai campi RecordCount e PageCount, al contrario del precedente è strettamente collegato al database: quindi modifiche effettuate da altri utenti si propagano all oggetto e sono visibili. Corso basi di dati - ASP e i database ditomass@dia.uniroma3.it 40 20

CursorType (3) adopenkeyset : come adopendynamic, ma non consente di vedere le modifiche effettuate sul recordset da altri utenti o meglio: non consente l accesso a record nuovi immessi da altri utenti, non consente l accesso a recordset cancellati da altri utenti, modifiche sui valori fatte dagli altri utenti sono comunque visibili. Corso basi di dati - ASP e i database ditomass@dia.uniroma3.it 41 LockType adlockreadonly : non consente di modificare i dati del cursore (usato in collaborazione con aduseclient e adopenforwardonly) adlockoptimistic : blocca il cursore solo nel momento in cui viene eseguito il comando di aggiornamento (Update) adlockpessimistic : blocca il cursore immediatamente, ovvero appena viene editato(modificato) Corso basi di dati - ASP e i database ditomass@dia.uniroma3.it 42 21

Leggere record dal database Notazione per accedere alle colonne del recordset: NomeRecordSet.Fields.Item( NomeColonna ).Value NomeRecordSet( NomeColonna ) NomeRecordSet(n) Nei nostri esempi NomeRecordSet è objrs Metodi Per accedere alle righe del recordset MoveNext: Consente di spostarsi al record successivo MovePrevious: Consente di spostarsi al record precedente MoveFirst: spostamento al primo record MoveLast: spostamento sull ultimo record BOF: indica se è posizionato all inizio del recordset (True) EOF: indica se si è giunti alla fine del recordset (True) Fields.Count: numero di colonne presenti nel cursore Corso basi di dati - ASP e i database ditomass@dia.uniroma3.it 43 Esempio di lettura dei record dal database <HTML> <BODY>.Tutte le password memorizzate nel database: <BR> <% While Not objrs.eof Response.Write Cursore( UserID ) & : & _ objrs( Password ) & <BR> objrs.movenext Wend N.B. Se non includete l istruzione MoveNext, il programma cicla all infinito, non basta chiudere il browser, ma occorre fermare e riavviare PWS/IIS (le ASP sono tecnologia Server- Side). Corso basi di dati - ASP e i database ditomass@dia.uniroma3.it 44 22

Aggiungere record al database Utilizzare il metodo Execute, passandogli una Query SQL query= INSERT INTO STUDENTE VALUES & _ (82498, Gianluca, Di Tomassi, 6stosenso ) objrs.execute(query) Utilizzare il metodo AddNew per aggiungere una riga al recordset. In questo caso, i campi del record devono essere impostati con aduseserver e con adopendynamic o adopenkeyset. AddNew crea il nuovo record vuoto e lo definisce come record corrente. Dopo aver terminato di impostare i valori, si deve aggiungere il record alla tabella del db con Update Corso basi di dati - ASP e i database ditomass@dia.uniroma3.it 45 Esempio: objrs.addnew objrs( Nome ) = Gianluca objrs.update In alternativa si può utilizzare la seguente sintassi: objrs.addnew campo, valore Campo e valore sono valori singoli o array con lo stesso numero di elementi. Esempio: objrs.addnew Nome, Gianluca objrs.addnew Array( Nome, Cognome ), Array( Gianluca, Di Tomassi ) Corso basi di dati - ASP e i database ditomass@dia.uniroma3.it 46 23

Modificare un record del database Utilizzare il metodo Execute, passandogli una Query SQL query= UPDATE STUDENTE SET Password = canone^-1 & _ WHERE Matricola=82498 objrs.execute(query) Utilizzare il metodo Update per modificare una riga al recordset. In questo caso, i campi del record devono essere impostati con aduseserver. Ci si deve portare sul record che si desidera modificare e poi objrs( Password ) = canone^-1 objrs.update Corso basi di dati - ASP e i database ditomass@dia.uniroma3.it 47 Utilizzando CancelUpdate si può operare sulle modifiche effettuate sui record esistenti objrs( Nome ) = Gianluca objrs( Cognome ) = Di Tomassi objrs.cancelupdate In questo modo si annullano le due righe precedenti Esempio: objrs( password ) = Request( Pass ) objrs( email ) = Request( Email ) If objrs( password ) = Then objrs.cancelupdate Else objrs.update End If Corso basi di dati - ASP e i database ditomass@dia.uniroma3.it 48 24

Elimina un record del database Utilizzare il metodo Execute, passandogli una Query SQL query= DELETE FROM STUDENTE WHERE Matricola=82498 objrs.execute(query) Utilizzare il metodo Delete per modificare una riga al recordset. In questo caso, i campi del record devono essere impostati con aduseserver. Esempio: objrs.movefirst objrs.delete Cancella il primo record Corso basi di dati - ASP e i database ditomass@dia.uniroma3.it 49 Esempio di estrazione dei dati <HTML> <BODY> <% trovati = objrs.recordcount Response.Write Il cursore è composto da &trovati& righe While Not objrs.eof Response.Write objrs( NomeProdotto") Response.Write objrs.movenext Wend... Corso basi di dati - ASP e i database ditomass@dia.uniroma3.it 50 25

Chiusura del recordset e della connessione... objrs.close objconn.close Set objrs = Nothing Set objconn = Nothing %> </BODY> </HTML> Corso basi di dati - ASP e i database ditomass@dia.uniroma3.it 51 Chiusura anticipata della connessione Al fine di risparmiare risorse del sistema è possibile chiudere la connessione con il server, ma avere la possibilità di continuare ad utilizzare l oggetto recordset. Ciò è possibile solo se il cursore è di tipo aduseclient, in quanto il contenuto del cursore è trasferito nell area di memoria del server Web ed è quindi separato dal database server. Corso basi di dati - ASP e i database ditomass@dia.uniroma3.it 52 26

Chiusura anticipata della connessione <!--#include file="adovbs.inc"-->. <% Set objrs = Server.CreateObject("ADODB.Recordset") objrs.activeconnection = objconn objrs.cursorlocation = aduseclient objrs.open(query) objrs.activeconnection = Nothing objconn.close Set objconn = Nothing While NOT objrs.eof. %> Chiusura anticipata della connessione Corso basi di dati - ASP e i database ditomass@dia.uniroma3.it 53 Approfondimenti sulla connessione Tre metodi per la connessione: I METODO La connessione avviene usando l oggetto ADODB.RecordSet: Set objrs = Server.CreateObject("ADODB.recordset") objrs.open strquery, strprovider Con il metodo objrs.open apriamo materialmente la comunicazione con il database che si trova sul server, nel percorso individuato attraverso la stringa strprovider e definiamo anche l interrogazione (in questo caso statica) che si vuole effettuare sul database e che viene letta attraverso la stringa strquery. Corso basi di dati - ASP e i database ditomass@dia.uniroma3.it 54 27

strprovider = "DRIVER=Microsoft Access Driver (*.mdb); DBQ=" & Server.MapPath("/") & "\asp\login.mdb;" strquery = "SELECT user, password FROM LOGIN WHERE user= "&user& Per definire il path dove si trova il database, utilizziamo il metodo dell oggetto Server, MapPath in questo modo rendiamo il percorso relativo e non assoluto (Metodo 1a). SVANTAGGIO: Problemi di carico sul server Se il programma viene sviluppato solo per una macchina e non si prevede di dover in futuro, esportare le pagine realizzate su altri server, è preferibile usare la seguente modalità per definire il path Corso basi di dati - ASP e i database ditomass@dia.uniroma3.it 55 strprovider = "DRIVER=Microsoft Access Driver (*.mdb); DBQ= & c:\inetpub\wwwroot\asp\login.mdb;" In questo caso specifichiamo il path assoluto sulla macchina che stiamo utilizzando (Metodo 1b). II METODO Set objconn = Server.CreateObject("ADODB.Connection") objconn.open strprovider In questo caso ci limitiamo a connettere il database con la nostra pagina NOTA: non abbiamo ancora definito nessuno strumento per lavorare sui record. definiamo il seguente oggetto: Corso basi di dati - ASP e i database ditomass@dia.uniroma3.it 56 28

Set objconn = server.createobject("adodb.connection") objconn.open strprovider Set objrs = Server.CreateObject("ADODB.Command") Set objrs.activeconnection = objconn Ora objrs, ci permetterà di svolgere update, delete e insert, sul database (attraverso objrs.open(query_definita) ). III METODO In questo caso la connessione sfrutta le proprietà del driver odbc. Set objconn = Server.CreateObject("ADODB.Connection") objconn.open nome_sorgente_dati_odbc" Corso basi di dati - ASP e i database ditomass@dia.uniroma3.it 57 29