Giusta logica per accedere a DB con le oledb

lunedì 16 aprile 2007 - 13.03

ciuky Profilo | Newbie

Ciattutti...
dopo aver risolto i miei vari problemi di accesso al db msde e fatto delle prove ora mi accingo a risolvere i problemi di prestazioni.

Quello che non mi è proprio chiaro è quale sia la giusta logica per accedere al db tramite le oledb, ossia:

come ovunque documentato i passi sono:


creare la connessione:

oledbcon = new System.Data.OleDb.OleDbConnection("Provider=sqloledb;Data Source=server;Initial Catalog=nomedb;User Id=sa;Password=password;");

istanzio l'oledbcommand:
OleDbCommand myAccessCommand = new OleDbCommand("select * from articoli",oledbcon );

istanzio l'adapter:

OleDbDataAdapter myDataAdapter = new OleDbDataAdapter(myAccessCommand);

apro la connessione:

oledbcon .Open();

e gestisco l'adapter magari alimentandoci un dataset

myDataAdapter.Fill(myDataSet);




quello che mi è poco chiaro è:

una volta alimentato il dataset con i dati provenienti dall'adapter...posso chiudere la connessione?

se sono nel loop di lettura del datatable proveniente dal dataset:

foreach (DataRow dr in myDataSet.Tables[0].Rows)
{

e qui ho necessittà di effettuare una nuova select su una diversa tabella dello stesso db, cosa debbo fare?
le stesse operazioni effettuate per la gestione della prima select saprendo una diversa connessione o sfruttando la stessa ?


}

ecco...questo mi è davvero poco chiaro...

qualcuno mi saprebbe illuminare?

grazie in anticipo

Red

dedalo.nel.labirinto Profilo | Newbie



una volta aperta la connessione con il metodo Open() puoi mantenerla finchè ne hai bisogno,
non è necessario crearne una nuova, ma solo un nuovo comando per l'altra select.

se chiami il metodo Fill() senza aprire tu la connessione, sarà il DataAdapter stesso a gestirla,
e quindi una volta chiamato il metodo Fill si occuperà lui di aprirla e poi chiuderla una volta eseguito il comando.


Cteniza Profilo | Guru

Non è per niente necessario aprire la connessione per dare i comandi sul dataadapter.
Se la connessione è aperta la usa, poi ci devi pensare tu a chiuderla.
Se la connessione invece non è aperta il dataadapter la apre e chiude automaticamente prima e dopo il proprio lavoro.

dedalo.nel.labirinto Profilo | Newbie



si era quello che intendevo dire.

se viene aperta una connessione esplicitamente con Open() allora possono essere eseguiti diversi i comandi sfruttando sempre quella e chiudendola nel momento in cui non sia più necessaria con Close(), senza doverne aprire una per ogni singolo comando.

se la connessione non viene aperta esplicitamente con il metodo Open() allora sarà il DataAdapter a gestirla, aprendola e poi infine chiudendola ogni volta che viene eseguito un comando.
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5