私は、クライアント、従業員、サービス、販売、および予定の記録を保持する小さなキャッシャーアプリケーションのようなものを作成しています。私は、Windowsフォームを使用して、そのDataGrids内です。アプリケーション用に使用するデータベースを作成しました。代わりにSqlCommand-SqlDataReaderまたはSqlDataAdapter-DataSetを使用する必要があるかどうかを知りたい。どのアプローチが良いですか?SqlCommandまたはSqlDataAdapter?
答えて
これは、必要な操作の種類によって大きく異なります。
以下は私のsuggetionです。あなたがより速くデータを読み取るSqlDataReaderのために行きたいが、それは、操作のコストとして付属している場合
は、あなたはまた、後にリード時 を取る必要があります。 接続を開く データを読み取る 接続を閉じます。それ以上に閉じるのを忘れてしまった場合、パフォーマンスが低下します。 SqlDataAdapterオブジェクト
- ため
ゴーあなたはより速く読み、切断されたアーチの利点を使用したい場合。
- これにより自動的に接続が閉じられます。
- また、DataSetの更新をDataBaseに自動的に処理させることもできます。 (SqlCommandBuilder)
SQLCommand(これは、読み込みデータ用にSQLDataReaderを読み込んだ場合)と挿入と更新のために使用します。
- これにより、挿入と更新のパフォーマンスが向上します。
は、.NETフレームに3.5 SP1を使用しているか、後で私はLINQ to SQLのをお勧めしますかEntity Frameworkのも あなたの目的を解決したい場合。
ありがとうございました。必要に応じて、あなたのクライアントやアップデートデータベースに
これらのコンポーネント(Core ADO.NET)(Command、Connection、DataAdapter)を認識している場合は、Entity Data Model
またはLinq-SQL
をお勧めします。
SqlDataAdapter
は、暗黙的にSqlCommand
,SqlConnection
およびSqlDataReader
を使用するヘルパークラスです。
SqlDataAdapter
- データが格納されます。したがって、それは より多くのメモリを消費します。
- 一方、
insert/delete/update/select
コマンドでデータベースに接続する必要はありません。 - 内部で接続を管理しているため、 を心配する必要はありません。
SqlDataAdapter
からのすべての良いものは、より多くのメモリを消費します。これは通常、データベースに接続された複数のユーザーを必要とするシステムに使用されます。
あなたの状況がSqlCommandと接続されたモデルではないと言えます。
データを読み込み、更新/挿入/削除しない場合は、SqlDataReader
が高速になります。また、DataSet
と組み合わせることもできます。 using
ステートメントでデータアクセスオブジェクトをラップすると、ランタイムは接続クリーンアップロジックを処理します。
私は、多くの場合、同期アクセスに使用するパターンは、このようなものです:アップデートについて
DataTable result = new DataTable();
using (SqlConnection conn = new SqlConnection(MyConnectionString))
{
using (SqlCommand cmd = new SqlCommand(MyQueryText, conn))
{
// set CommandType, parameters and SqlDependency here if needed
conn.Open();
using (SqlDataReader reader = cmd.ExecuteReader())
{
result.Load(reader);
}
}
}
/削除/挿入を、SqlDataAdapter
は検討する価値があるかもしれませんが、あなたはすでにDataSet
でデータを持っている通常場合にのみ、 。さもなければ、より速く、より良い方法があります。
データアダプタは、数百万のレコード(私のデータセットにある2〜3百万のレコード)を挿入するのに適していますか? –
DataReader - datareaderは、データベースの転送専用の読み取り専用ストリームのデータ です。これにより、データリーダは、 の時間に1つのレコードだけがメモリに取り込まれるため、データ検索のための非常に効率的な手段が実現されます( )。デメリット:接続オブジェクトには一度に1つの データレアしか含めることができません。したがって、 が終了した時点で明示的にデータレアを終了する必要があります。これにより、他の用途への接続が解放されます。 データアダプタオブジェクトは、開口部を管理し、
DataAdapterを実行する コマンドの接続を閉じるであろう - SQLコマンドとデータセットを充填し、データ ソースを更新するために使用されるデータベース 接続のセットを表します。 データの取得と保存のためのデータセットとデータソースの間のブリッジとして機能します。 DataAdapterは、 マッピングでこのブリッジを提供します。データセット内のデータをデータソース内のデータ と一致するように変更し、Updateはデータセット内のデータと一致するようにデータ のデータを変更します。これを使用すると、DataAdapter も必要に応じて自動的に接続を開いたり閉じたりします。
- 1. SQLDataAdapterで使用するSQLCommandを作成する
- 2. SqlConnection、SqlDataAdapter、およびSqlCommandオブジェクトを再利用する必要がありますか?
- 3. データは、SqlDataAdapterオブジェクトが
- 4. SQLDataadapter with Delete
- 5. SqlCommandオブジェクト
- 6. SqlCommand C#
- 7. SqlDataAdapter UpdateBatchSize行のエラー
- 8. SqlDataAdapterメモリの使用
- 9. SqlConnection SqlCommand SqlDataReader IDisposable
- 10. DataReaderとSQLCommand
- 11. SqlCommandオブジェクトCommandTimeoutプロパティ
- 12. ストアドプロシージャとSqlCommandタイムアウト
- 13. SqlCommandオブジェクトAddWithValue
- 14. Fill()関数の後にSqlDataAdapterはSqlConnectionを閉じますか?
- 15. SqlCommand C#でNameValueCollectionを渡す方法は?
- 16. SQLコマンドはC#SqlCommandではなくSSMSで動作します
- 17. SqlCommandオブジェクトのasp.net C#が
- 18. SqlCommandオブジェクト、C#の発行
- 19. SqlCommandのパラメータの明確化
- 20. SQLDataAdapterを使用したDataGrid更新の問題
- 21. SqlCommandはパラメータ化されたSQL文を最適化しますか?
- 22. SqlConnection.CreateCommandと新しいSqlCommandの違いはありますか?
- 23. SqlCommandはどのようにパラメータをサニタイズしますか?
- 24. SQLDataAdapter RowUpdatingイベントの目的は何ですか
- 25. C#のパラメータを使用したSqlCommandの文字列リスト
- 26. SqlCommandメソッドWPFアプリケーションでINSERTクエリを実行中にエラーが発生しました
- 27. SqlCommand(CommandType Text)がパラメータコレクションを取得する
- 28. SqlCommandパラメーターの追加とAddWithValueの比較
- 29. sql-maven-plugin sqlCommandでシングルクォートをエスケープ
- 30. SqlCommandの関数を呼び出す
[SqlDataReaderのVSのSqlDataAdapter(http://stackoverflow.com/questions/1676753/sqldataadapter-vs-sqldatareader)SqlDataReaderのVSのSqlDataAdapter]の –
可能な重複(http://stackoverflow.com/の可能重複質問/ 1676753/sqldataadapter-vs-sqldatareader) –