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 12 - a cura di Paolo Malesci

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


Oggetto ADO (ActiveX Data Object): l'oggetto Recordset

L'oggetto Recordset rappresenta l'intero insieme di record o di una Table o risultanti dall'esecuzione di un comando query; referenzia sempre ad un solo record dell'insieme, il record corrente.
Delle numerose proprietà e metodi esamineremo solo quelle di uso più frequente.

Per utilizzarlo dobbiamo prima crearne una istanza:

Set objRs = Server.CreateObject("ADODB.Recordset")

Adesso abbiamo accesso ai metodi ed alle proprietà dell'oggetto.

Metodi
Proprietà
 Open  ActiveConnection
 Requery  Source
 Close  CursorLocation
 AddNew  CursorType
 Delete  LockType
 Update  CacheSize
 CancelUpdate  MaxRecords
 MoveFirst  Filter
 MoveLast  BOF
 MoveNext  EOF
 MovePrevious  RecordCount

Di questi metodi e proprietà alcuni ci sono già noti in quanto li usiamo tutti i giorni nei programmi in Visual Basic, pertanto vedremo solo quelli nuovi o che hanno una sintassi particolare.
Vediamo per primi Open e Close con un esempio.
Andiamo ad aggiungerli alle functions e subroutines contenute in un file .asp di cui facciamo l'include della lezione precedente.

<%
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 OpenRs(mysql,update) 'update = True|False
Set objRs = Server.CreateObject("ADODB.Recordset")
If update Then
objRs.LockType = 2 ' adLockPessimistic
Else
objRs.LockType = 1 ' adLockReadOnly
End If
objRs.Open mysql,objConn,2,,1
End Function

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

Function CloseRs()
objRs.Close
set objRs = Nothing
End Function
.......
.......
%>

La sintassi di Open è la sequente:

ojbrecordset.Open Source,ActiveConnection,CursorType,LockType,Options

Dei parametri del metodo solo l'ultimo non è anche una proprietà.
Source - generalmente o il nome di una Table o una stringa SQL.
ActiveConnection - un oggetto Connection aperto od una stringa di connessione valida; in quest'ultimo caso vale quanto già detto per l'oggetto Command.
CursorType:

Valore
Costante
 0  adOpenForwardOnly
 1  adOpenKeyset
 2  adOpenDynamic
 3  adOpenStatic

LookType:

Valore
Costante
 1  adLookReadOnly
 2  adLookPessimistic - il record viene bloccato  all'atto dell'edit
 3  adLookOptimistic - il record viene bloccato  solo all'atto dell'update

Options: equivale al CommandType già visto

Il metodo Open è necessario in tutti quei casi in cui non ci basta un recordset Forward-only e Read-only; apre in pratica un cursore e questo è il parametro (o proprietà) più importante.
Dei cursori possibili tutti, tranne il primo, consentono libertà di navigazione, ma hanno diverso comportamento: il cursore dinamico riflette la situazione dei record in tempo reale, quello statico da una visione congelata all'atto della Open, il Keyset non visualizza i nuovi record aggiunti da altri utenti ma solo le cancellazioni e le variazioni; ovviamente l'utilizzo di risorse è tanto maggiore quanto maggiore è la dinamicità.

Il metodo Requery riesegue la query sorgente del recordset; ha ovviamente senso solo per cursori diversi da Dinamic.
Da tenere presente che il comportamento di AddNew e dell'editing del record corrente è lo stesso: il movimento ad altro record forza l'esecuzione del metodo Update; per eliminare le variazioni pendenti eseguire CancelUpdate prima dello spostamento.

Delle proprietà esaminiamo solo CacheSize, Filter e MaxRecords; le altre o le abbiamo già esaminate o sono ovvie.
CacheSize indica il numero di record (default = 1) da leggere ogni volta dal database e trasferire nella memoria locale; è utile per velocizzare l'esecuzione ma aggiornamenti eseguiti da altri utenti non provocano l'aggiornamento della memoria cache.
L'aggiornamento può essere forzato con il metodo Resync, ma ciò può generare errori che vanno gestiti; pertanto l'utilizzo della cache è tranquillo solo con cursore statico.
Filter applica un filtro al recordset aperto; può essere o una stringa contente la condizione o una delle costanti adFilterGroupEnum; di quest'ultime ci interessa solo adFilterNone (=0), che rimuove il filtro ripristinando così la vista dell'intero recordset.
La stringa è dello stesso tipo che useremmo in una clausola WHERE di una SQL; a questo proposito riteniamo utile precisare che il delimitatore di stringa da utilizzare nel linguaggio SQL è ' e non " (nella RecordSource in Visul Basic funzionava anche il secondo, ma qui è meglio attenersi agli standard SQL): "Campo1 = 'Pippo' AND (Campo2 = 'Pluto' OR Campo3 = 2)" è una forma corretta.
MaxRecords indica il numero di record (default=0, l'intero recordset) da trasferire nel recordset; richiede ovviamente meno risorse, ma si utilizza solo in casi particolari (ad esempio ci sono sufficienti solo un certo numero di risultati di una query di interrogazione).


NOTA: Tenere presente che quasi tutte le Proprietà diventano read-only dopo l'esecuzione del metodo Open e tali restano fino all'esecuzione del metodo Close.

Oggetto Recordset: Collection Fields

All'oggetto Recordset è associato l'insieme Fields, ovvero i campi del record.
L'accesso ai singoli oggetti Field può avvenire o tramite indice:

objRecordset.Fields(I) - con I da 0 a objRecordset.Fields.Count-1

o tramite il nome:

objRecordset.Fields("nomecampo")

Le Proprietà dell'oggetto Field sono:

Proprietà
 Name
 ActualSize
 DefinedSize
 Type
 Precision
 NumericScale
 OriginalValue
 UnderlyingValue
 Value

Name è il nome del campo.
DefinedSize e ActualSize sono rispettivamente la lunghezza del campo e la lunghezza del dato contenuto: ad esempio un campo testo di 50 caratteri contenente Paolo ha DefinedSize = 50 ed ActualSize = 5.
Type indica il tipo di campo e può assumere i seguenti valori (tenete presente che non esistono solo database Access):

Valore
Costante
 0  Empty
 12  Variant
 10  Error (32 bit Error Code)
 Con segno:
 16  TinyInteger (I1)
 2  Small Integer (I2)
 3  Integer (I4)
 20  Long (I8)
  Senza segno:
 17  TinyInteger (UI1)
 18  Small Integer (UI2)
 19  Integer (UI4)
 21  Long (UI8)
  
 4  Single
 5  Double
 7  Date
 133  Data yyyymmdd
 134  Time hhmmss
 135  Date/Time yyyymmddhhmmss.6 decimali
 11  Boolean
 8   Binary String
 129  Character String
 130  Unicode String
  Il formato è definito da Precision (n. digit) e NumericScale (n. decimali),   Currency ha 4 decimali fissi ed è memorizzato in un Long;
 6  Currency
 14  Decimal
 128  Binary
 131  Numeric
  
 9  IDispatch (interfaccia OLE)
 13  IUnknown (interfaccia OLE)
 72  GUID
 132  User Defined


Value è il contenuto del campo ed è la proprietà di default: objRecordset.Fields("nomecampo") equivale a

objRecordset.Fields("nomecampo").Value

OriginalValue è il contenuto del campo prima degli aggiornamenti in corso.
UnderlyingValue è il contenuto del campo dopo tutte le Update (anche di altri utenti) pendenti.


Nella prossima lezione riprenderemo l'Esempio 1 e vedremo come applicare le nuove conoscenze.

Si ringrazia per l'articolo Paolo Malesci