[C#] Access Anzahl Datensätze

soyo

Erfahrenes Mitglied
Hallo,

Ich bin gerade dabei ein kleines Tool zu schreiben um an einer Access Datenbank herumfuhrwerken.
Die Verbindung und alles stellt auch kein Problem dar, doch möchte ich jetzt die Anzahl der betroffenen Datensätze eines Querys ausgeben.

Mit SELECT COUNT (*) AS anzahl komme ich auch schnell an die Anzahl. Wie kann ich diesen jetzt aber auslesen? Ich habe gelesen das ich dazu einen DataReader verwenden sollte. Das funktioniert auch damit, jedoch bekomm ich vom DataReader ja Objects, ich bräuchte aber einen Integer-Wert.

Also meine Fragen: Gibt es eine bessere Lösung als einen DataReader?
Wenn nicht, wie konvertiere ich ein Object zu einen Integer-Wert?

Gruß soyo

Hier etwas Code:

Code:
string strQuery = "SELECT COUNT (*) AS anzahl FROM daten WHERE serienbrief =-1";

OleDbCommand cmd = new OleDbCommand(strQuery, con);
con.Open();

OleDbDataReader dr = cmd.ExecuteReader();
MessageBox.Show(dr["anzahl"].ToString());
 
heng noch das dran
Code:
dr.Read();
object val = dr.GetValue(0);
int anzahl = 0;
int.TryParse(val.ToString(), out anzahl);
dann haste in der var anzahl die Anzahl drin
 
ich hätte gesagt für kleinere Sachen wie Solche anzahlen auslesen ja,
sonst würde ich eher mit nem DataAdpater un ner DataTable arbeiten
 
Genau für Count-Abfragen etc. gibt es beim Command die Methode ExcecuteScalar. Dieser wäre der korrekte Ansatz. Der Reader erzeugt hier nur unnötig Overhead.
 
Ich habe mich eben nochmal in der Doku belesen, wäre denn die Methode ExecuteNonQuery() in diesen Fall eine bessere Wahl? Vor allem liefert sie gleich einen Integer-Wert. Aber da ich sehr unerfahren mit .NET bin, lasse ich mich gern eines Besseren belehren.

Gruß soyo

EDIT: Ich habe weitergelesen, ExcecuteScalar ist natürlich genau richtig.
 
Zuletzt bearbeitet:
Der integer wert in diesem Fall bezieht sich nur auf die Anzahl der Datensätze die z.B. bei nem Insert eingefügt wurden
 
Zurück