これら3つを使用する場合、どのような場合がありますか?どこで使用すべきか、使用すべきではないのか?
ExecuteScalar
は通常、クエリが単一の値を返すときに使用されます。それ以上を返す場合、結果は最初の行の最初の列です。例としては、SELECT @@IDENTITY AS 'Identity'
があります。ExecuteReader
は、複数の行/列を持つ結果セットに使用されます(例:SELECT col1, col2 from sometable
)。ExecuteNonQuery
は通常、結果のないSQLステートメント(UPDATE、INSERTなど)に使用されます。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のドキュメントを確認してください
ExecuteReader()
は、クエリの結果に対して前方アクセスと読み取り専用アクセスを提供するデータプロバイダーDBDataReaderオブジェクトを返すSQLクエリを実行します。
ExecuteScalar()
は、レコードカウントの取得などのシングルトンクエリ用に設計されたExecuteReader()
メソッドに似ています。
ExecuteNonQuery()
create、delete、update、insertで動作する非クエリを実行します)
ExecuteNonQueryメソッドは、INSERT、DELETE、またはUPDATE操作で影響を受けた行の数を返します。このExecuteNonQueryメソッドは、挿入、更新、削除、作成、およびSETステートメントでのみ使用されます。 (続きを読む)
ExecuteScalarは、コマンドオブジェクトを使用したSQLクエリまたはストアドプロシージャの実行時に、単一行単一列値、つまり単一値を返します。データベースから単一の値を取得するのは非常に高速です。 (続きを読む)
ExecuteReaderは、コマンドオブジェクトを使用したSQLクエリまたはストアドプロシージャの実行時に、行のセットを返すために使用されます。これはレコードの前方検索のみで、最初から最後までテーブル値を読み取るために使用されます。 (続きを読む)
ExecuteNonQuery
このExecuteNonQueryメソッドは、挿入、更新、削除、作成、およびSETステートメントでのみ使用されます。 ExecuteNonQueryメソッドは、INSERT、DELETE、またはUPDATE操作で影響を受けた行の数を返します。
ExecuteScalar
データベースから単一の値を取得するのは非常に高速です。 Execute Scalarは、コマンドオブジェクトを使用したSQLクエリまたはストアドプロシージャの実行時に、単一行単一列値、つまり単一値を返します。 ExecuteReader
Execute Readerは、コマンドオブジェクトを使用した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