Abfrageergebnisse so schnell wie möglich darstellen

05/12/2008 - 08:33 von Nico | Report spam
Hallo,
ich möchte (umfangreiche) Daten in einem Datagrid darstellen (C#). Ich
arbeite dabei mit dem Dataadapter der ein Dataset füllt, was ich dann an das
Grid binde. Das Problem ist nur, dass es bis zu 20 Sek. dauert, bis die Daten
dargestellt werden. Wenn ich die gleiche Abfrage im Management Studio
dürchführe dauert es zwar auch bis zu 20 Sek. bis die Abfrage abgeschlossen
ist, aber die ersten Ergebnisse werden bereits nach 2 Sekunden dargestellt.
Gibt es eine Möglichkeit dieses Verhalten nachzustellen? Mir würde dazu noch
einfallen mit dem DataReader zu arbeiten und die Daten Zeile für Zeile
manuell zu schreiben. Gibt es hier keine elegantere Möglichkeit?

Vielen Dank für Eure Hilfe,
Nico
 

Lesen sie die antworten

#1 Carl Schaffert
05/12/2008 - 08:53 | Warnen spam
Hallo Nico,

ich möchte (umfangreiche) Daten in einem Datagrid darstellen (C#). Ich
arbeite dabei mit dem Dataadapter der ein Dataset füllt, was ich dann an
das
Grid binde. Das Problem ist nur, dass es bis zu 20 Sek. dauert, bis die
Daten
dargestellt werden. Wenn ich die gleiche Abfrage im Management Studio
dürchführe dauert es zwar auch bis zu 20 Sek. bis die Abfrage
abgeschlossen
ist, aber die ersten Ergebnisse werden bereits nach 2 Sekunden
dargestellt.
Gibt es eine Möglichkeit dieses Verhalten nachzustellen? Mir würde dazu
noch
einfallen mit dem DataReader zu arbeiten und die Daten Zeile für Zeile
manuell zu schreiben. Gibt es hier keine elegantere Möglichkeit?



Eine der vielen möglichen Lösungen wàre tatsàchlich einen DataReader zu
benutzen... das Ganze packst du einfach in einen weiteren Thread, sofern du
dich damit noch nicht soooo auskennst, wàre das Einfachste einen
Backgroundworker zu benutzen. Das Einfachste wàre dann dass du das Ganze im
"DoWork-Event" implementierst und bei jeder Zeile, die dir der DataReader
liefert, das ProgressChanged-Event auslöst, dem du als Object die vom
DataReader gelieferte Zeile übergibst. Natürlich gebe es auch hier
(Backgroundworker) noch die eine oder andere Möglichkeit ;-) darüber hinaus
gàbe es noch LinqToSql oder das EF, wodurch sich natürlich noch ganz andere
Möglichkeiten ergeben ;-).

I hope that helps...

Gruß Carl

Ähnliche fragen