Odpowiedzi:
ExecuteScalar
jest zwykle używany, gdy zapytanie zwraca pojedynczą wartość. Jeśli zwróci więcej, wynikiem jest pierwsza kolumna pierwszego wiersza. Przykładem może być SELECT @@IDENTITY AS 'Identity'
.ExecuteReader
jest używany dla dowolnego zestawu wyników z wieloma wierszami / kolumnami (np SELECT col1, col2 from sometable
.).ExecuteNonQuery
jest zwykle używany do instrukcji SQL bez wyników (np. UPDATE, INSERT itp.).ExecuteNonQuery
może zwrócić liczbę obsługiwanych wierszy.
ExecuteNonQuery ():
ExecuteReader ():
ExecuteScalar ():
Referencyjny adres URL:
http://nareshkamuni.blogspot.in/2012/05/what-is-difference-between.html
Każdy z nich jest wykonaniem innego typu.
ExecuteScalar będzie typem zapytania, które będzie zwracać pojedynczą wartość.
Przykładem może być zwrócenie wygenerowanego identyfikatora po wstawieniu.
INSERT INTO my_profile (Address) VALUES ('123 Fake St.');
SELECT CAST(scope_identity() AS int)
ExecuteReader udostępnia czytnik danych, który umożliwia odczytanie wszystkich kolumn wyników w jednym wierszu.
Przykładem może być pobranie informacji o profilu jednego lub większej liczby użytkowników.
SELECT * FROM my_profile WHERE id = '123456'
ExecuteNonQuery to dowolny kod SQL, który nie zwraca wartości, ale w rzeczywistości wykonuje jakąś formę pracy, taką jak wstawianie, usuwanie lub modyfikowanie czegoś.
Przykładem może być aktualizacja profilu użytkownika w bazie danych.
UPDATE my_profile SET Address = '123 Fake St.' WHERE id = '123456'
Z dokumentacji (uwaga: MSDN to przydatny zasób, jeśli chcesz wiedzieć, co się dzieje!):
Użyj metody ExecuteScalar, aby pobrać pojedynczą wartość (na przykład wartość zagregowaną) z bazy danych. Wymaga to mniej kodu niż użycie metody ExecuteReader, a następnie wykonanie operacji potrzebnych do wygenerowania pojedynczej wartości przy użyciu danych zwróconych przez SqlDataReader.
Wysyła CommandText do Connection i kompiluje SqlDataReader.
... i z SqlDataReader ...
Zapewnia sposób odczytu strumienia wierszy tylko do przodu z bazy danych SQL Server. Ta klasa nie może być dziedziczona.
Funkcji ExecuteNonQuery można używać do wykonywania operacji katalogu (na przykład wykonywania zapytań dotyczących struktury bazy danych lub tworzenia obiektów bazy danych, takich jak tabele) lub do zmiany danych w bazie danych bez użycia DataSet przez wykonanie instrukcji UPDATE, INSERT lub DELETE.
Aby dodać do tego, co opublikowali inni:
Funkcja ExecuteScalar koncepcyjnie zwraca skrajną lewą kolumnę z pierwszego wiersza zestawu wyników zapytania; można wykonać ExecuteScalar a SELECT * FROM staff, ale otrzyma się tylko pierwszą komórkę z wynikowych wierszy. Zwykle używane w przypadku zapytań zwracających pojedynczą wartość. Nie jestem w 100% pewien co do SQLServer, ale w Oracle nie użyłbyś go do uruchomienia FUNKCJI (kodu bazy danych, który zwraca pojedynczą wartość) i oczekujesz, że zwróci ci wartość zwracaną przez funkcję, nawet jeśli funkcje zwracają pojedyncze wartości. .Jeżeli jednak uruchamiasz funkcję jako część zapytania, np. SELECT SUBSTR ('abc', 1, 1) FROM DUAL, to zwróci ona wartość zwracaną ze względu na fakt, że wartość zwracana jest przechowywana w lewym górnym rogu komórka wynikowego zestawu wierszy
Metoda ExecuteNonQuery byłaby używana do uruchamiania procedur składowanych w bazie danych, funkcji i zapytań, które modyfikują dane (INSERT / UPDATE / DELETE) lub modyfikują strukturę bazy danych (CREATE TABLE ...). Zwykle wartość zwracana wywołania jest wskazaniem, na ile wierszy wpłynęła operacja, ale sprawdź dokumentację bazy danych, aby to zagwarantować
ExecuteReader()
wykonuje zapytanie SQL, które zwraca obiekt DBDataReader dostawcy danych, który zapewnia dostęp tylko do przodu i tylko do odczytu dla wyniku zapytania.
ExecuteScalar()
jest podobna do ExecuteReader()
metody przeznaczonej do zapytań pojedynczych, takich jak uzyskiwanie liczby rekordów.
ExecuteNonQuery()
nie wykonuj zapytania, które działa z tworzeniem, usuwaniem, aktualizacją, wstawianiem)
ExecuteNonQuery
Ta metoda ExecuteNonQuery będzie używana tylko do instrukcji wstawiania, aktualizowania i usuwania, tworzenia i ustawiania. Metoda ExecuteNonQuery zwróci liczbę wierszy wykonanych operacjami INSERT, DELETE lub UPDATE.
ExecuteScalar
Pobieranie pojedynczych wartości z bazy danych jest bardzo szybkie. Funkcja Execute Scalar zwróci wartość pojedynczej kolumny w jednym wierszu, tj. Pojedynczą wartość, po wykonaniu zapytania SQL lub procedury składowanej przy użyciu obiektu polecenia. ExecuteReader
Execute Reader zostanie użyty do zwrócenia zestawu wierszy podczas wykonywania zapytania SQL lub procedury składowanej przy użyciu obiektu polecenia. Ten służy do pobierania rekordów tylko do przodu i służy do odczytywania wartości tabeli od pierwszej do ostatniej.
Metoda ExecuteNonQuery zwróci liczbę wierszy wykonanych operacjami INSERT, DELETE lub UPDATE. Ta metoda ExecuteNonQuery będzie używana tylko do instrukcji wstawiania, aktualizowania i usuwania, tworzenia i ustawiania. (Czytaj więcej)
Funkcja ExecuteScalar zwróci wartość pojedynczej kolumny w jednym wierszu, tj. Pojedynczą wartość, po wykonaniu zapytania SQL lub procedury składowanej przy użyciu obiektu polecenia. Pobieranie pojedynczych wartości z bazy danych jest bardzo szybkie. (Czytaj więcej)
ExecuteReader zostanie użyty do zwrócenia zestawu wierszy podczas wykonywania zapytania SQL lub procedury składowanej przy użyciu obiektu polecenia. Ten służy do pobierania rekordów tylko do przodu i służy do odczytywania wartości tabeli od pierwszej do ostatniej. (Czytaj więcej)
ExecuteNonQuery: jest zwykle używany, gdy instrukcje Sql nie zwracają żadnych informacji, takich jak operacje wstawiania, aktualizowania, usuwania.
cmd.ExcecuteNonQuery();
ExecuteScalar:
Będzie używany, gdy zapytanie Sql zwróci pojedynczą wartość.
Int b = cmd.ExcecuteScalar();
ExecuteReader
Będzie używany, gdy kwerenda SQL lub procedura składowana zwróci wiele wierszy / kolumn
SqlDataReader dr = cmd.ExecuteReader();
aby uzyskać więcej informacji, kliknij tutaj http://www.dotnetqueries.com/Article/148/-difference-between-executescalar-executereader-executenonquery