Veröffentlicht 13. Juli 200619 j Wie kann ich von SqlDataReader anzahl von Datensätzen auslesen bzw. zurück bekommen? Gibt es da eine Methode oder muss ich den DataReader selber durchlaufen?
13. Juli 200619 j du hast AFAIR zwei möglichkeiten: a) SqlDataReader durchloopen und selbst zählen: SqlDataReader meinReader; meinReader = myCommand.ExecuteReader(); int cntAnzahlDS = 0; while (meinReader.Read()) { cntAnzahlDS++; } SqlDataReader in ein DataSet umwandeln und dann die DS zählen. s'Amstel
13. Juli 200619 j als dritte methode, welche ich empfehlen würde, kann man auch den sql-server die "arbeit" erledigen lassen. Also "SELECT COUNT(*) FROM TABLE"
14. Juli 200619 j Öhm, der letzte Vorschlag ist nicht ganz dein Ernst, oder? Ich glaube bigpoint möchte nicht die Anzahl der Datensätze in der Tabelle sondern die Anzahl der Datensätze, die von seiner Abfrage betroffen sind. Der SqlDataReader hat im übrigen eine Property namens RecordsAffected, die den gewünschten Wert enthält.
14. Juli 200619 j Öhm, der letzte Vorschlag ist nicht ganz dein Ernst, oder? Ich glaube bigpoint möchte nicht die Anzahl der Datensätze in der Tabelle sondern die Anzahl der Datensätze, die von seiner Abfrage betroffen sind.Es sollte offensichtlich sein, dass das Statement gegebenfalls an die verwendete Abfrage angepasst werden muss. Je nach Statement und Anzahl der Datensätze kann dieser Ansatz viel schneller sein, als mitzählenderweise durch das Ergebnis zu laufen. Der SqlDataReader hat im übrigen eine Property namens RecordsAffected, die den gewünschten Wert enthält.Nein. 0 if no rows were affected or the statement failed; and -1 for SELECT statements. Und selbst wenn es für Abfragen funktionieren würde: The RecordsAffected property is not set until all rows are read and you close the SqlDataReader.
14. Juli 200619 j Autor als dritte methode, welche ich empfehlen würde, kann man auch den sql-server die "arbeit" erledigen lassen. Also "SELECT COUNT(*) FROM TABLE" Ja es stimmt, das wehre aber dann bedeutet dass ich noch einen SqlDataReader deklarieren muss und dass wollte ich einfach mir sparen
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.