回答:
ExecuteScalar
通常、クエリが単一の値を返す場合に使用されます。それ以上を返す場合、結果は最初の行の最初の列になります。例はかもしれませんSELECT @@IDENTITY AS 'Identity'
。ExecuteReader
複数の行/列を持つ結果セットに使用されます(例:)SELECT col1, col2 from sometable
。ExecuteNonQuery
通常、結果のないSQLステートメント(UPDATE、INSERTなど)に使用されます。ExecuteNonQuery
影響を受ける行数を返すことができます。
ExecuteNonQuery():
ExecuteReader():
ExecuteScalar():
参照URL:
http://nareshkamuni.blogspot.in/2012/05/what-is-difference-between.html
それぞれが異なるタイプの実行です。
ExecuteScalarは、単一の値を返すクエリのタイプになります。
例は、挿入後に生成されたIDを返すことです。
INSERT INTO my_profile (Address) VALUES ('123 Fake St.');
SELECT CAST(scope_identity() AS int)
ExecuteReaderを使用すると、結果のすべての列を一度に1行ずつ読み取ることができるデータリーダーが返されます。
たとえば、1人または複数のユーザーのプロファイル情報を取得する場合があります。
SELECT * FROM my_profile WHERE id = '123456'
ExecuteNonQueryは、値を返さない任意のSQLですが、実際には、挿入の削除や変更などの何らかの形式の作業を実行しています。
例としては、データベース内のユーザーのプロファイルの更新があります。
UPDATE my_profile SET Address = '123 Fake St.' WHERE id = '123456'
ドキュメントから(メモ:何が行われているのかを知りたい場合、MSDNは便利なリソースです!):
ExecuteScalarメソッドを使用して、データベースから単一の値(たとえば、集計値)を取得します。これにより、ExecuteReaderメソッドを使用して、SqlDataReaderから返されたデータを使用して単一の値を生成するために必要な操作を実行するよりも、必要なコードが少なくなります。
CommandTextをConnectionに送信し、SqlDataReaderを構築します。
...そしてSqlDataReaderから...
SQL Serverデータベースから行の順方向のみのストリームを読み取る方法を提供します。このクラスは継承できません。
ExecuteNonQueryを使用して、カタログ操作(たとえば、データベースの構造のクエリやテーブルなどのデータベースオブジェクトの作成)を実行したり、UPDATE、INSERT、またはDELETEステートメントを実行して、DataSetを使用せずにデータベース内のデータを変更したりできます。
他の人が投稿したものに追加するには:
ExecuteScalarは概念的には、クエリからの結果セットの最初の行の左端の列を返します。SELECT * FROMスタッフをExecuteScalarすることもできますが、結果の行の最初のセルしか取得できません。通常、単一の値を返すクエリに使用されます。私は、SQLServerのわから100%ではないですが、Oracleには、あなたがwouldntの FUNCTION(単一の値を返すデータベース・コード)を実行し、関数は、単一の値を返すにもかかわらず、それはあなたの関数の戻り値を与えることを期待するためにそれを使用します。ただし、関数をクエリの一部として実行している場合(例:SELECT SUBSTR( 'abc'、1、1)FROM DUAL)は、戻り値が左上の一番上に格納されているため、戻り値が返されます。結果の行セットのセル
ExecuteNonQueryは、データを変更する(INSERT / UPDATE / DELETE)またはデータベース構造を変更する(CREATE TABLE ...)データベースストアドプロシージャ、関数、およびクエリを実行するために使用されます。通常、呼び出しの戻り値は、操作によって影響を受けた行数を示しますが、これを保証するためにDBのドキュメントを確認してください
ExecuteNonQuery
このExecuteNonQueryメソッドは、挿入、更新、削除、作成、およびSETステートメントにのみ使用されます。ExecuteNonQueryメソッドは、INSERT、DELETE、またはUPDATE操作で影響を受けた行数を返します。
ExecuteScalar
データベースから単一の値を取得するのは非常に高速です。Execute Scalarは、コマンドオブジェクトを使用してSQLクエリまたはストアドプロシージャを実行すると、単一行の単一列の値、つまり単一の値を返します。 ExecuteReader
Execute Readerは、コマンドオブジェクトを使用してSQLクエリまたはストアドプロシージャを実行すると、行のセットを返すために使用されます。これはレコードの順方向検索のみであり、テーブル値を最初から最後まで読み取るために使用されます。
ExecuteNonQueryメソッドは、INSERT、DELETE、またはUPDATE操作で影響を受けた行数を返します。このExecuteNonQueryメソッドは、挿入、更新、削除、作成、およびSETステートメントにのみ使用されます。(続きを読む)
ExecuteScalarは、コマンドオブジェクトを使用してSQLクエリまたはストアドプロシージャを実行すると、1行1列の値、つまり1つの値を返します。データベースから単一の値を取得するのは非常に高速です。(続きを読む)
ExecuteReaderは、SQLクエリまたはコマンドオブジェクトを使用したストアドプロシージャの実行時に、行のセットを返すために使用されます。これはレコードの順方向検索のみであり、テーブル値を最初から最後まで読み取るために使用されます。(続きを読む)
ExecuteNonQuery: 通常、挿入、更新、削除操作などのSQLステートメントから何も返されない場合に使用されます。
cmd.ExcecuteNonQuery();
ExecuteScalar:
SQLクエリが単一の値を返すときに使用されます。
Int b = cmd.ExcecuteScalar();
ExecuteReader
SQLクエリまたはストアドプロシージャが複数の行/列を返すときに使用されます
SqlDataReader dr = cmd.ExecuteReader();
詳細については、ここをクリックしてくださいhttp://www.dotnetqueries.com/Article/148/-difference-between-executescalar-executereader-executenonquery