2011-01-05 26 views
0

現在、C#でDataGridViewでSQLiteデータベースを使用しようとしています。ADO.NET DataSetの使用

Iは、次の処理を行いサンプルプログラムを見ている:

DataSet combinedDataSet = new DataSet(); 
DataTable ContactsTable = CombinedDataSet.Tables.Add("contacts"); 
DataTable FoodTable = CombinedDataSet.Tables.Add("food"); 

SQLiteDataAdapter ad = new SQLiteDataAdapter(command) 

ad.Fill(FoodTable); 
ad.Fill(ContactsTable); 

このデータテーブルは、その後のDataGridViewのソースとして使用されます。 DataSetを使用する理由

私の質問はこれですか? DataTableにまっすぐに行かないのはなぜですか?

非常に良い理由があると確信していますが、それでもコードから取り除いても、それでもが表示され、正常に動作するためにはと表示されます。

答えて

1

DataSetは、リレーショナルデータのメモリ内表現です。特に、複数のDataTableが関係している場合があります。


"DataSets, DataTables, and DataViews (ADO.NET)"を参照してください。 DataSetがDataRelationオブジェクトのコレクションをどのように維持するか、そして各DataTableがそれ自身の親と子の関係のコレクションをどのように維持しているかがわかります。

+1

あなたがデータセットで購入しているデータテーブル間の関係です。関連するデータテーブル関数が必要ない場合は、データセットを使用してスキップすることができます。 – Beth

+0

データセットが必要な関係はどのようなものですか? – Mark

+0

親子関係、または他の任意の外部キー関係における関係。顧客→受注→受注明細→プロダクト実際のデータベースと同じです。 –

0

ここでは、DataTablesをDataSetに配置する特別な理由はないことに同意します。 DataSetは、潜在的にSessionを含むDataTablesを渡すための便利なコンテナの1つです。です。

DataTableを別々に呼び出して、必要に応じて呼び出すのが簡単で、データセット内で相互に関連付けるのではないと思うなら、うまくいくでしょう。

0

実際には、DataAdapterオブジェクトを使用して更新を行う場合は、DataSetオブジェクトを使用する必要があります。たとえば、DataAdapter.Updateメソッドを使用する場合は、DataSetオブジェクトに渡す必要があります。

+0

返信いただきありがとうございますが、そのメソッドをDataTableに渡しており、正常に動作しているようです。(上記のように) – Mark

+0

UpdateメソッドはDataTableを受け入れますか?面白い。私はそれが働いているのか分からなかった。 –

+0

私は間違いかもしれませんが、私はそう思います。 – Mark

0

あなたが@ジョンサンダースは関係について言ったことを、 は、私は2つのより多くの利益

(XSLから生成された)型付きデータセットでの作業と考えることができ

そばデータセット

なしのみのDataTableを持つことperfacly okですTyped DataTableはDataSetの内部にネストされているため、データセットのレベルで作業します。

データセットは、デバッグに役立ちます。 inermediateウィンドウでは、combinedDataSet.GetXml()を呼び出して調べたり、コンテンツをよりよく分析するためにファイルに保存したりすることができます。新しいdotnet-4がTable.GetXml()を許可していても、dotnet-3.5 table.GetXml()まで存在しない場合、私はshureしていません。

関連する問題