Hat ExecuteScalar()
irgendwelche Vorteile gegenüber ExecuteReader()
?Hat ExecuteScalar() irgendwelche Vorteile gegenüber ExecuteReader()?
Antwort
ExecuteScalar
gibt nur den ersten Wert aus der ersten Zeile des Datasets zurück. Intern wird es wie ExecuteReader()
behandelt, ein DataReader
wird geöffnet, der Wert wird ausgewählt und der DataReader
wird danach zerstört. Ich habe mich auch immer über dieses Verhalten gewundert, aber es hat einen Vorteil: Es findet innerhalb des Rahmenwerks statt ... und Sie können nicht mit dem Rahmen in den Arten der Geschwindigkeit konkurrieren.
Bearbeiten von rwwilden: einen Blick mit Reflektor Taking innen SqlCommand.ExecuteScalar()
Sie diese Zeilen sehen:
SqlDataReader ds = this.RunExecuteReader(
CommandBehavior.Default, RunBehavior.ReturnImmediately, true, "ExecuteScalar");
obj2 = this.CompleteExecuteScalar(ds, false);
Genau das, was im Inneren ExecuteReader
passiert. Ein weiterer Vorteil ist, dass ExecuteScalar
null
zurückgibt, wenn keine Daten gelesen werden. Wenn Sie ExecuteReader
verwenden, müssen Sie dies selbst überprüfen.
+1 für die Verwendung von Reflektor. – Steven
Von SqlCommand.ExecuteScalar Method
Verwenden Sie die ExecuteScalar Methode einen einzelnen Wert abrufen (zB ein Gesamtwert) aus einer Datenbank. Dies erfordert weniger Code als die ExecuteReader-Methode, und dann die Operationen durchführen, die Sie Notwendigkeit, die einzelnen Wert unter Verwendung der Daten von einem SqlDataReader zurück erzeugen.
Auch von What is the difference between ExecuteReader, ExecuteNonQuery and ExecuteScalar
- ExecuteReader: Verwenden Sie für Daten zugreifen. Es bietet ein Forward-only, schreibgeschütztes verbundenes Recordset.
- ExecuteNonQuery: Verwenden Sie für Daten Manipulation, wie Einfügen, Aktualisieren, Löschen.
- ExecuteScalar: Verwenden für das Retrivieren 1 Zeile 1 Spalte. Wert, d.h. Einzelwert. zB: zum Abrufen der Aggregatfunktion. Es ist schneller als andere Möglichkeiten von Abruf eines einzelnen Wertes aus der DB.
Wenn Sie einen einzelnen Wert von Ihrer Abfrage oder SP zurückgegeben haben, ist es immer besser, ExecuteScalar() zu verwenden, da der erste Wert des Ergebnisses abgerufen wird. Daher ist dies in einer solchen Situation schneller.
Führen Sie Scalar aus, um einen einzelnen Wert aus der Datenbank zu erhalten, während Reader ausgeführt wird, um mehrere Datensätze in DataTable zu übernehmen.
Von ExecuteScalar Seite auf MSDN:
Use the ExecuteScalar method to retrieve a single value (for example, an aggregate value) from a database. This requires less code than using the ExecuteReader method, and then performing the operations that you need to generate the single value using the data returned by a SqlDataReader
So ist es nicht schneller oder besser, sondern verwendet wird, um die Menge an Code geschrieben zu reduzieren, wenn nur ein Wert benötigt wird.
ExecuteScalar() benötigt weniger Ressourcen als ExecuteReader(), da später die Daten aus mehreren Spalten aus der Datenbank zurückgegeben werden.
ExecuteReader() wird die SqlDataReader Instanziieren die Strom basiert und abfragen, um die Ergebnisse aus der Datenquelle
- 1. Bietet Pthreads irgendwelche Vorteile gegenüber GCD?
- 2. Was ist der Unterschied zwischen ExecuteScalar, ExecuteReader und ExecuteNonQuery?
- 3. Welche Vorteile hat Scala gegenüber Java für die gleichzeitige Programmierung?
- 4. Welche Vorteile hat eine dokumentenbasierte Datenbank gegenüber einer relationalen Datenbank?
- 5. Welche Vorteile hat MATLAB gegenüber SCILAB und umgekehrt?
- 6. Abhängigkeitseigenschaft hat viele Vorteile gegenüber den normalen CLR-Eigenschaften Wie?
- 7. Welche Vorteile hat das Test Data Builder-Muster gegenüber Objektinitialisierern?
- 8. Vorteile von Parcelable gegenüber JSON
- 9. Vorteile von MySQL gegenüber MySQL
- 10. Vorteile von MemoryPoolMXBean.getUsage() gegenüber Runtime.freeMemory()
- 11. Groovy Vorteile gegenüber Jython oder Jruby?
- 12. Welche Vorteile bietet WCF gegenüber ASMX-Webdiensten?
- 13. Welche Vorteile bietet Sass gegenüber normalem CSS?
- 14. Vorteile von abstrakten Methoden gegenüber Methodenüberschreibung
- 15. ado.net Datendienst Vorteile/Nachteile gegenüber WCF-Dienst
- 16. Hat PLINQ wirklich Vorteile?
- 17. Vorteile von GitHub gegenüber Bitbucket für Git Repositories
- 18. Hat List.Insert irgendwelche Leistungseinbußen?
- 19. Hat Q_UNUSED irgendwelche Nebenwirkungen?
- 20. Hat eine sprachspezifische IDE Vorteile gegenüber einem Plugin für eine mehrsprachige IDE?
- 21. Vorteile von Polling Multiple Ble Verbindungen gegenüber simultanen Verbindungen?
- 22. ExecuteScalar fehlende Assembly-Referenz
- 23. Was sind die Vorteile von QAbstractItemModel gegenüber QStandardItemModel?
- 24. Was sind die Vorteile von Google Fonts gegenüber Cufon?
- 25. Was sind die Vorteile von Bytecode gegenüber nativem Code?
- 26. Was sind die Vorteile von concurrent.futures gegenüber Multiprocessing in Python?
- 27. Vorteile der Verwendung von Wrapper-Klassen gegenüber Primitiven in Java
- 28. Welche Vorteile bietet ein MSI-Installationsprogramm gegenüber einer Standard-setup.exe?
- 29. Vorteile von jQuery Widget gegenüber regulären JS-Objekt?
- 30. Was sind die Vorteile eines Powershell-Skripts gegenüber einer Konsolenanwendung?
Scaler für die Einzelwerte, Reader für mehrere Werte abruft. –