31 messaggi dal 02 maggio 2001
www.blackice.it
Ciao
ho scritto questa classe:

public class DataAccess
{
public DataAccess()
{
//
// TODO: aggiungere qui la logica del costruttore
//
}
public MySqlDataReader GetDataReader(string strConnect, string ProcSql)
{

string strCommandText = ProcSql;
MySqlDataReader objDataReader;
//nuova connessione
MySqlConnection objConnect = new MySqlConnection(strConnect);
//nuovo command
MySqlCommand objCommand = new MySqlCommand(strCommandText, objConnect);
try
{
//apertura connessione
objConnect.Open();
objDataReader = objCommand.ExecuteReader(CommandBehavior.CloseConnection);
}
catch (Exception objError)
{
WriteToEventLog(objError);
throw;
}
return objDataReader;
}
}

Adesso però ogni volta che istanzio

DataAccess xxx = new DataAccess();
MySqlDataReader reader= xxx.GetDataReader(fff,sss);

reader lo posso chiudere

mentre mi rimane aperto objDataReader!!!

Come lo posso chiudere.
Ciao
Stefano
78 messaggi dal 01 febbraio 2007
Io ti consiglierei di fare un metodo disconnectReader all'interno della
tua classe DataAccess in cui chiudi l'objDataReader
scusa ma se fai reader.Close() stai chiudendo objDataReader visto che stiamp parlando di riferimenti

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
31 messaggi dal 02 maggio 2001
www.blackice.it
ho messo:
public void disconnectReader(MySqlDataReader reader) {
reader.Close();

}

ma adesso dove lo metto... se lo metto prima del return va in errore perchè il reader risulta chiuso
se lo metto dopo il return il metodo non viene chiamato


Ciao
Stefano
31 messaggi dal 02 maggio 2001
www.blackice.it
x nostromo

io volevo essere sicuro che il reader venisse chiuso.

vero! reader è un riferimento di objDataReader
quindi se chiudo reader chiudo anche objDataReader?


Secondo te basta mettere allora
CommandBehavior.CloseConnection

per chiudere anche la connessione.
ciao
Stefano
IMHO è concettualmente sbagliata l'idea di usare una funzione d'appoggio per ottenere il datareader (è un approccio mutuato da classic asp o sbaglio?) anche perché perdi il controllo degli altri oggetti necessari alla valorizzazione del dataread, ovvero connection/transaction e command. Che, tra l'altro, implementano IDisposable...

Sono poche righe di codice che vale la pena scrivere ogni volta, magari usando lo statement using.

HTH

Matteo Casati
GURU4.net
m.casati ha scritto:
IMHO è concettualmente sbagliata l'idea di usare una funzione d'appoggio per ottenere il datareader (è un approccio mutuato da classic asp o sbaglio?) anche perché perdi il controllo degli altri oggetti necessari alla valorizzazione del dataread, ovvero connection/transaction e command. Che, tra l'altro, implementano IDisposable...

Sono poche righe di codice che vale la pena scrivere ogni volta, magari usando lo statement using.

HTH


onestamente ho usato più volte funzioni d'appoggio che restituivano DataReader in una classe del ormai mio vecchissimo Dal, il metodo era abbastanza semplice, passavo connessione e quanto altro serviva, naturalmente il tutto non usciva mai dal dal.

per tempest : si se imposti CloseConnection alla chiusura del Reader chiudi anche la connessione

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
31 messaggi dal 02 maggio 2001
www.blackice.it
quindi è meglio scrivere ogni volta connssione command datareader etc..

...pensavo di avere fatto una cosa utile

ciao
Stefano

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.