52583


お世話になります。

初歩な質問でいつもすみません。  
C#を使用し、Accessとデータのやり取りを行う必要がでてきたので  
勉強から始め直したのですが、このDataSetの使い道がいまだによくわかりません。

まず、『メモリ上にデータを保持する』とか書いてあるのですが、これは単に  
ListやDictionary等のコレクションクラスで二次元などの配列を作り、  
そこに値を入れていくということとはまた別なのでしょうか？  
もし同じなら、わざわざDataSetなるもを使用せずとも、自分で領域を作ってさえおけば  
それで用が事足りてしまうのではないかという気がします。

また、DataSet側の値を操作、変更してもデータベース側も自動で変更されるわけでは  
ないので、結局はADOなどでゴリゴリSQLを走らせなければならないというと、  
『ただの入れ物』にすぎないということなのでしょうか？

やりたいことは、データベース側のデータをリアルタイムで取得し、変更などが  
行われた場合にデータベース側への更新を極力少ない手間で行いたいのですが、  
そういったことはこのDataSetは受け付けてくれるのでしょうか？

基本的な内容で申し訳ありませんが、何卒お願いいたします。


CC BY-SA 4.0
2019-02-05T05:49:44.803
52557
2019-02-07T11:56:18.993
9374
question
c# database
C# DataSetの使い道を教えてください。


2001年当時のADO.NET関連の機能や概念のために作られていまし「た」。  
・型付きDataSet, 型なしDataSet（join Select、DataTableのグループ化など）  
・型付きDataTable, 型なしDataTable（DBのテーブルに対応）  
・TableAdapter（単純なDBのテーブルへのCRUD操作の対応）  
・データバインディング

これは主に2つの視点から見ることができます。

  1. 2001年当時の、現在でいうORM自動生成機能（結局SQL直書きがmustなので流行らず※）
  2. DataGridViewなどWindows.Forms UIパーツとの双方向データバインド。MVVMのVM的

2番はDataGridViewなどでバインドが非常に便利なので、今でもよく使われます。  
（EntityFrameworkやDapperで取得した内容を、わざわざDataTableに詰めなおす、などやったり…）

普通のコレクションもバインドはできますが、UI側が強制的にReadonlyになります。  
・List型  
・配列 etc.

※  
単純なSelect/Insert/Update/Deleteであれば、  
TableAdapterのメソッド呼び出しでSQL自動発行されるのですが、  
実業務でそんな単純に済むことが多くなく、結局SQL書いた方が早くね？ってなります。


CC BY-SA 4.0
2019-02-06T03:52:13.857
52583
2019-02-07T11:56:18.993
2019-02-07T11:56:18.993
25396
25396
52557
answer