Connessione al database con Visual Basic NET? Lo trovi su Opentraining.it Visual Basic Italia
PRINCIPALE > CORSO DI ASP

Eseguire una ricerca veloce nell' archivio delle risorse di Visual Basic Italia®: 

Preso dall'archivio...

Premere il pulsante sotto per accedere direttamente ad un articolo o ad un esempio preso in modo casuale dall'archivio.



Ultimo e-book pubblicato:

"INTRODUZIONE AI CSS"

Lo scopo del CSS language è quello di controllare lo stile dei vari elementi che concorrono a formare un
documento HTML.
Si può operare in tre modi collegamento ad un foglio di stile esterno;definizione degli stili all'inizio
del documento utilizzo della proprietà style all'interno di un Tag HTML (embedded style). Questo e-book introduttivo
servirà per apprendere tali nozioni fondametali dei fogli di stile.

Prezzo: € 0.0.
Presentazione:
REAL SOFTWARE RILASCIA LA VERSIONE 5.0 di REALbasic per Windows






Gorizia, 5 maggio 2003 - Active, distributore in esclusiva di REALSoftware, Austin, Tx, annuncia la disponibilità di REALbasic 5.0 per Windows, uno strumento per lo sviluppo semplice da usare che permette agli utenti Windows di tutti i livelli di creare applicazioni personalizzate e di compilarle sia per la piattaforma Windows che per quella Macintosh.
[>>]

http://www.active-software.com

 

Contatti. Utilizzare l'email generica per domande relative al sito:
Porre domande relative al sito
oppure scrivere ad un responsabile di area.
Responsabile del sito: >Andrea Martelli
Responsabile area "Corso di VB":
> Giorgio Abraini

Corso di ASP: lezione 11 - a cura di Paolo Malesci

Questa lezione, consultata da 8451 utenti, è stata giudicata di ottimi contenuti , con un'esposizione perfettamente comprensibile e con un livello di approfondimento ottimo da 71 votanti.


Oggetto ADO (ActiveX Data Object)

permette l'interfacciamento ad una fonte di dati

Nota: Non è un oggetto built-in di ASP, bensì un oggetto ActiveX di Microsoft che interfaccia un Database tramite un provider OLEDB.

Utilizzando ADO è possibile eseguire le seguenti operazioni:

  1. Connettersi ad un Database;
  2. Specificare un comando per accedere alla fonte dati;
  3. Eseguire il comando;
  4. Se il comando restituisce i dati sotto forma di righe all'interno di una tabella, memorizzare tali righe in una memoria cache che può essere visualizzata o modificata in modo immediato;
  5. Specificare una modalità di individuazione degli errori, derivanti in genere dall'apertura di una connessione o dall'esecuzione di un comando.

Tutto ciò è realizzato tramite un modello ad oggetti; gli oggetti sono:

  • Connection - ad esso è associata la Collection Errors contente gli oggetti Error
  • Command - ad esso è associata la Collection Parameters contente gli oggetti Parameter
  • Recordset - ad esso è associata la Collection Fields contente gli oggetti Field

a questi oggetti ed all'oggetto Field è associata inoltre la collection Properties.

Eventi

Con l'introduzione di ADO 2.0 viene integrato il concetto di eventi nel modello di programmazione: gli eventi sono notifiche dell'avvenuto o del prossimo completamento di una determinata operazione; sono in genere utilizzati per coordinare in modo efficiente un'applicazione costituita da più operazioni asincrone.
Il modello con oggetti non implementa gli eventi in modo esplicito, ma li rappresenta come chiamate di routine del gestore degli eventi.
I gestori degli eventi che vengono richiamati prima dell'inizio di un'operazione consentono di esaminare o modificare i parametri dell'operazione, quindi di annullare l'operazione o di completarla.
I gestori degli eventi che vengono richiamati dopo il completamento di un'operazione notificano l'avvenuto completamento di un'operazione asincrona.
Non esamineremo adesso le loro caratteristiche, rinviando l'argomento a lezioni successive.
Esamineremo invece adesso gli oggetti, i loro metodi e le loro proprietà ma, contrariamente a quanto fatto finora, l'esame non sarà sistematico ed esaustivo visto il notevole numero di questi elementi; ci limiteremo ai più importanti ed introdurremo gli altri quando ne avremo bisogno per particolari operazioni negli esempi applicativi.

Oggetto Connection

L'accesso da un'applicazione a una fonte dati avviene attraverso una connessione, l'ambiente indispensabile per effettuare uno scambio di dati.
Una transazione identifica l'inizio e la fine di una serie di operazioni di accesso ai dati eseguite nel corso di una connessione. ADO garantisce che tutte le modifiche apportate a una fonte dati dalle operazioni di una transazione vengano memorizzate oppure annullate; se si annulla la transazione o si interrompe un'operazione la fonte dati resterà invariata, come prima dell'inizio della transazione.
Il modello con oggetti non implementa in modo esplicito il concetto di transazione, ma lo rappresenta tramite una serie di metodi dell'oggetto Connection.


L'oggetto Connection consente l'accesso ad una fonte di dati sia tramite DSN, sia tramite riferimento esplicito; in ASP utilizzeremo ovviamente quest'ultimo metodo a meno che non si sia anche gli amministratori del Server (Housing e applicazioni Intranet).

Per utilizzarlo dobbiamo prima crearne una istanza:

Set objConn = Server.CreateObject("ADODB.Connection")

Adesso abbiamo accesso ai metodi ed alle proprietà dell'oggetto.
Ci limiteremo ai metodi Open, Execute e Close.

Vediamo Open e Close con un esempio.
Per motivi di sicurezza i nostri database sono in una cartella chiamata database e non accessibile al client Internet; si tratta di db MS Access e se vogliamo possiamo anche proteggerli con password.
L'accesso dalle nostre pagine avviene tramite uso di functions e subroutines contenute in un file .asp di cui facciamo l'include.

<%
Dim objConn
Dim objrs
.......
.......

Function OpenDb(nomedb,passw)
Dim Connstring
Dim Snomedb

Set objConn = Server.CreateObject("ADODB.Connection")
Snomedb = Server.MapPath("database/" & nomedb)
Connstring = "Driver={Microsoft Access Driver (*.mdb)};DBQ=" _
& Snomedb & ";"
If Len(Trim(passw)) > 0 Then
Connstring = Connstring & "PWD=" & passw & ";"
End If
objConn.Open Connstring
End Function

Function CloseDb()
objConn.Close
set objConn = Nothing
End Function
.......
.......
%>

volendo avremo potuto aggiungervi anche la gestione errori e porre

OpenDb = 0

se OK, altrimenti

OpenDb = cod. errore

Naturalmente se pippo1.mdb non ha password scriveremo:

OpenDb("pippo1.mdb","")

Da notare set objConn = Nothing; questa assegnazione rilascia l'oggetto e libera quindi le risorse relative impegnate dal server; ricordatevelo sempre, eviterete di essere prima o poi scaricati per mancanza di risorse del server!
Non credo vi siano bisogno di altri commenti all'esempio, semmai di una considerazione pratica: è meglio che i nostri database siano in Access 97 piuttosto che in Access 2000 se non siamo sicuri del livello di Access supportato dal nostro provider Internet.

Vediamo adesso il metodo Execute: può essere utilizzato in due forme a secondo che restituisca o meno un recordset.
Qualora Execute restituisca un recordset questo sarà sempre del tipo read-only forward-only.


Sintassi:

objconnection.Execute CommandText[, RecordsAffected[, CommandType]]
Set objrecordset = objconnection.Execute(CommandText[, RecordsAffected[, CommandType]])

CommandText: il comando da eseguire;
RecordsAffected (opzionale): variant Long in cui il provider restituisce il numero dei record interessati;
CommandType (opzionale): indica al provider come valutare CommandText.
I valori possibili sono:

 Costante
Significato
 adCmdText  definizione testuale del comando (SQL standard);
 adCmdTable  nome di una Tabella;
 adCmdStoredProc  Stored Procedure;
 adCmdUnknown  tipo non conosciuto (default).

Noi useremo sempre l'opzione 1, ma potremo anche non specificarla; in questo caso l'esecuzione sarà un po' più lenta (il provider OLEDB deve determinare lui di che tipo si tratta).

Oggetto Command

L'oggetto Command è la definizione di uno specifico comando da eseguire sulla fonte dei dati.
Abbiamo già visto come sia possibile eseguire un comando con il metodo Execute dell'oggetto Connection; pertanto l'oggetto Command verrà usato se avremo bisogno di ripetute esecuzioni del commando o se avremo da utilizzare Stored Procedure (query con parametri).
Inoltre utilizzando la proprietà Name è possibile eseguirlo come metodo dell'oggetto Connection associato.

<%
Dim objConn
Dim objCmd
Dim objRs
Dim Connstring
Dim Snomedb

Set objConn = Server.CreateObject("ADODB.Connection")
Snomedb = Server.MapPath("database/pippo1.mdb")
Connstring = "Driver={Microsoft Access Driver (*.mdb)};DBQ=" _
& Snomedb & ";"
objConn.Open Connstring
Set objCmd = Server.CreateObject("ADODB.Command")
objCmd.ActiveConnection = objConn
objCmd.CommandText = "SELECT * FROM Tabella1 WHERE Sesso='M'" _
& " ORDER BY Cognome, Nome"
objCmd.CommandType = 1
objCmd.Name = "Maschi"
Set objRs = objConn.Maschi
.......
.......
%>

Metodi: Execute, CreateParameter
Proprietà: ActiveConnection, CommandText, CommandTimeout, CommandType, Name

Il metodo Execute ha la stessa sintassi di quello dell'oggetto Connection; da notare che i parametri del metodo possono anche essere impostati come proprietà dell'oggetto prima di richiamare il metodo.
Nell'esempio precedente al posto delle 2 ultime istruzioni avremmo potuto scrivere:

Set objRs = objCmd.Execute

Inoltre è possibile passare un oggetto Command alla proprietà Source del metodo Open di un recordset.
Nell'esempio abbiamo prima aperto una connessione; avremmo potuto non farlo ponendo ActiveConnection ad una stringa di connessione valida. In questo caso ADO crea comunque un'oggetto Connection, ma non lo associa ad alcuna variabile; è necessario creare un oggetto Connection se abbiamo più oggetti Command e/o Recordset da associare a quella connessione.


NOTA: Qualora non abbiate familiarità con la sintassi SQL vi consiglio di consultare la Lezione 2 del mio corso di Database.

Si ringrazia per l'articolo Paolo Malesci