私はExecuteScalar、ExecuteReader、ExecuteNonQueryを使用するタイミングは?
- リスト項目
- は、ExecuteScalarの使用と混乱しています、
- のExecuteReader、
- は、ExecuteNonQuery
これらのメソッドを使用するには?
私はExecuteScalar、ExecuteReader、ExecuteNonQueryを使用するタイミングは?
これらのメソッドを使用するには?
ExecuteScalar()は、クエリの最初の行の最初の列の値のみを返します。
ExecuteReader()は、一度に1つのレコードのみをメモリに保持しながら、結果セット全体を反復処理できるオブジェクトを返します。
ExecuteNonQuery()はデータをまったく返しません。挿入、更新、または削除の影響を受ける行の数だけです。
また、あなたがのDataTableまたはのDataSetオブジェクトに全体の結果セットをダウンロードすることができます塗りつぶし()法だけでなく、多数のを含んたDbDataAdapterタイプ、で見ることができます他の能力。
最後に、これはMSDNに慣れるのに良い時期のようです。これはドキュメント化のためのもので、メソッド名があります。彼らを見上げてください。
+1はMSDNドキュメントに言及しています...そしてもちろん正しい答えです。 – TyCobb
これは基本的に簡略化されていますが、SQL用語または.netオブジェクトをそれぞれ検索するか、詳細についてはMSDNのADO.netを参照してください。
ExecuteScalar
単一の数値を返すSQLスカラー関数を呼び出すと、
ExecuteReader
テーブルからレコードセットを返すSQL呼び出しを行うと、C#でデータを取得するためのSqlDataReaderオブジェクトが得られます。
は、SQLサーバーから期待される種類の戻り値がない場合に使用されます。例は単純なUPDATEステートメントです。
クエリが単一の値を返す場合はExecuteScalar
を使用してください。結果がさらに返された場合、最終結果は最初の行の最初の列になります。例では、複数の行/列(例えば、SELECT col1, col2 from MyTable
で結果セットを取得するためSELECT Count(*) from MyTable
使用ExecuteReader
かもしれません。
使用ExecuteNonQuery
データベースから結果を取得しますが、既存のデータベース(例えばにupdationをすることはありませんSQL文のために、 UPDATE, INSERT,
など)。
は、ExecuteNonQuery
ExecuteNonQueryメソッドは、 INSERTで行われた行の数を返すまたはDELETE UPDATE操作します。このExecuteNonQueryメソッドは、 が挿入、更新および削除、作成、およびSET ステートメントに対してのみ使用されます。 (Read More about ExecuteNonQuery)
SqlCommand.ExecuteNonQuery MSDN Documentation
のExecuteReader
Readerが SQLクエリまたはコマンドオブジェクトを使用してストアドプロシージャの実行には、行のセットを返すために使用されます実行します。この1つは レコードの前方のみの検索で、最初から最後までのテーブル の値を読み取るために使用されます。 (Read More about ExecuteReader)
SqlCommand.ExecuteReader MSDN Documentation
スカラー
がスカラーSQLクエリまたはコマンド オブジェクトを使用して、ストアドプロシージャの実行時に、すなわち単一 値の単一の行単一の列値を返す実行し実行します。データベースから単一の値を取得するのは非常に高速です。 (Read More about Execute Scalar)
は、ExecuteScalar:1つの値
Int32 Value = Convert.ToInt32(ExecuteScalar("SELECT SUM(COLUMNNAME) FROM TABLE"));
Int32 Value = Convert.ToInt32(ExecuteScalar("SELECT AVG(COLUMNNAME) FROM TABLE"));
のExecuteReader:行は順方向モードで読ん
IdataReader dr = ExecuteReader("SELECT * FROM TABLE");
while(dr.Read())
{
//You will get rows values like this dr["ColumnName"]
}
は、ExecuteNonQuery:あなたのタイトルは、いくつかの他の情報を提供しているが、問題のあなたの言葉遣いが異なるとして挿入/削除/
ExecuteNonQuery("DELETE FROM TABLE");
ExecuteNonQuery("UPDATE TABLE SET COLUMNNAME = 'A'");
テーブルに行を更新するためには、正しく質問をリフレームしてください。 'Where when use'の代わりに、' When when use'を使用する必要があります。 – dbw