Forums Neueste Beiträge
 

Speicherfreigabe nach Anzeige umfangreicher SQL-Anfrageergebnisse

20/08/2008 - 09:58 von Jonas Lellmann | Report spam
Hallo zusammen,

wahrscheinlich eine richtige Newbie-Frage, aber jeder fàngt mal klein an, ne?
Ich habe eine recht umfangreiche SQL-Query, deren Ergebnis ich über
folgenden Weg zur Anzeige in einem DataGridView-Objekt bringen möchte:

SqlConnection cn = new SqlConnection(".");
SqlCommand cmd = new SqlCommand();
SqlDataReader dr;

DataTable dt = new DataTable();
DataGridView dg = new DataGridView();

cmd.Connection = cn;
cmd.CommandType = CommandType.Text;
cmd.CommandText = "SELECT * FROM F___ing_Big_Table";

dr = cmd.ExecuteReader(CommandBehavior.SingleResult);
dt.Load(dr);
dg.DataSource = dt;
dr = null;

Der Speicherbedarf wàchst dabei ganz ordentlich an, wie man im Taskmanager
beobachten kann. Wenn ich dann eine neue Query absetzen will, führe ich
folgenden Code aus, bevor ich das obige Programmfragment nochmal durchlaufe:
dt.Dispose();
dg.Dispose();

Aber anstatt abzusinken, steigt der Speicherbedarf meines Programms einfach
weiter an, ohn vorher abzusinken. Was mache ich falsch?


Vielen Dank,
Jonas
 

Lesen sie die antworten

#1 Stefan Falz [MVP]
20/08/2008 - 11:03 | Warnen spam
Hallo Jonas,

"Jonas Lellmann" schrieb:

dr = cmd.ExecuteReader(CommandBehavior.SingleResult);
dt.Load(dr);
dg.DataSource = dt;
dr = null;



Da fehlt noch (anstelle von dr=null):

dr.Close();
dr.Dispose();

Tschau, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

Ähnliche fragen