Hallo und
Zunächst zum
Forum: Nach meiner Einschätzung passen Fragen zur ProgressBar eher nach Windows Forms, auch wenn es sich um die Anzeige während einer Datenbank-Verarbeitung handelt. Bei der Fortschrittsanzeige in einer Konsolenanwendung ginge es eher in Richtung Basistechnologien. Aber das ist in der Tat ein Grenzfall.
Zum eigentlichen
Problem: Bei einer DB-Abfrage wirst du kaum eine vernünftige Fortschrittsanzeige bekommen. Du schreibst nicht einmal, wie du es ausführst: mit
DbDataAdapter und
DataSet/DataTable oder mit
DbDataReader?
Das Abrufen der Daten geht immer "am Stück", erst nach Erledigung ist die Anzahl der Datensätze bekannt. Selbst bei
DbDataReader.RowsAffected heißt es:
SDK-Doku/MSDN hat folgendes geschrieben: |
Die RecordsAffected-Eigenschaft wird erst festgelegt, wenn alle Zeilen gelesen wurden und Sie den SqlDataReader schließen. |
Am ehesten geht es, wenn die Daten zunächst in eine DataTable eingelesen werden; dann kennst du Rows.Count und kannst für den zweiten Schritt, den Datenexport, die Anzeige einbauen.
So eine Aufgabe ist sowieso etwas für einen separaten
Thread bzw.
BackgroundWorker. Auch deshalb empfehle ich, es von vornherein als WinForms- bzw. WPF-Anwendung zu erstellen.
Gruß Jürgen