Newsgroup: it.comp.lang.visual-basic
Titolo: [un po' OT] ADO e ADO.NET

vorrei capire qualcosa in più sui database.
Ho letto dei dataset di 
ADO.NET
 e ho capito che essi vengono memorizzati e
gestiti dal client in modalità disconnessa.
Il datareader, invece, funziona in modalità connessa. Ma se ho un database
sul server, dove vengono memorizzati i dati sul server o sul client? E se la
risposta è sul server, rappresentano qualcosa in più rispetto ai dati del
database vero e proprio?
Anche in ADO mi pare che ci siano due modalità distinte, come si
differenziano?
Quello che vorrei capire, cioè, è dove vanno ad essere memorizzati nei vari
casi i dati delle query.

 database vero e proprio?
Mi sa che hai le idee poco chiare...
Allora: ADO
Esistono 4 tipi di cursori per utilizzare i recordset:
Static
Dynamic
Keyset
ForwardOnly
...e 2 metodi di "usarli": aduseClient e adUseServer.
Per le implementazioni standard (per esempio Oracle ha scritto un driver
OLEDB che utilizza tutte queste implementazioni, mentre quello per MySQL ne
ha meno dello standard):
Static = lato client (ma devi specificare che vuoi usare una connection lato
client al momento dell'apertura (o prima)
Gli altri = lato server
Quando usi un cursore lato client i dati vengono copiati e spediti al client
che li usa. In alcuni casi puoi aprire un recordset sul client e chiudere la
connessione mantenendo il recordset attivo e successivamente riaprire la
connessione e spedire le modifiche. Quando usi il server sul client viene
scaricata solo una piccola quantità di record (vedi proprietà cachesize (mi
pare) del recordset). Fatta esclusione per il cursore Keyset che scarica
comunque una "combinazione di chiavi identificative" per ogni record, ma qui
andiamo troppo nel complesso e anch'io rischio di fare confuzione...
in aggiunta ai tipi di cursore esistono i metodi di gestione del Lock del
recordset che possono essere:
ReadOnly
Pessimistic
Optimistic
OptimisticBatch
ReadOnly non ha bisogno di spiegazioni...
Pessimistic vuol dire che appena qualcuno inizia la modifica di un record
gli altri non sono autorizzati a modifiche sullo stesso record.
Optimistic vuol dire che a tutti gli utenti in ogni momento é permesso di
modificare qualsiasi record (con i rischi che ne derivano)
OptimisticBatch vuol dire che sei così ottimista che permetti a tutti di
modificare più di un record del recordset e di spedire le modifiche alla
fine in un colpo solo. Ovviamente questo Lock funziona SOLO con cursori lato
client!
Butalizzando, in 
ADO.NET
 pensa a queste similitudini (credo):
DataTable / DataSet = adUseClient + adOpenStatic + OptimisticBatch (o
Optimistic o ReadOnly a seconda dei parametri)
DataReader = adUseServer + AdOpenForwardOnly + recordset.Cachesize = 1 +
ReadOnly (o anche Optimistic se non sbaglio)
Beh, mi rendo conto di non essere stato chiarissimo, se vuoi capirne di più
le due bibbie di ADO (versione 2.5, ma le differenze sono poco
significative, legate soprattutto agli eventi) e 
ADO.NET
 le ha scritte David
Sceppa, ed. Mondadori Ms Press...
                    Ciao
                                                    Allanon
-- 
- SPAMKILLER
 L'indirizzo delle risposte é 
itlangv...@michele.sytes.net
 LASCIATE il NOSPAM fa parte dell'indirizzo :-)
  Per superare le impostazioni di protezione antispam scrivete
  nel testo del messaggio la scritta "SPAMKILLER"
Scusate il disturbo, ma non posso più di pubblicità