[英]ADO.NET DataSet usage
我目前正在尝试将SQLite数据库与C#中的DataGridView一起使用。
我看过一个执行以下操作的示例程序:
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的源。
我的问题是这样的:
为什么要使用数据集? 为什么不直接进入DataTable?
我敢肯定有一个很好的理由,但是从代码中删除它之后,它似乎仍然可以正常运行。
数据集是关系数据的内存表示形式。 特别是,它可能包含多个数据表,它们之间具有关系。
有关大量概述文章,请参见“ 数据集,数据表和数据视图(ADO.NET) ”。 您将看到DataSet如何维护DataRelation对象的集合,以及每个DataTable如何维护其自己的父子关系的集合。
我同意这里没有将DataTables放入DataSet的特殊原因。 DataSet只是一个方便的容器,用于传递DataTable,包括可能传递给Session。
如果您认为根据需要分别调用DataTable而不在DataSet中将它们彼此关联起来更简单,更简洁,则可以正常工作。
从实际的角度来看,如果您正在使用DataAdapter
对象执行更新,则可能有必要使用DataSet
对象。 例如,如果要使用DataAdapter.Update方法,则必须向其传递一个DataSet
对象。
完全可以只包含DataTables而没有DataSets
除了@约翰·桑德斯(John Saunders)关于关系的说法外,我还能想到另外两个好处
当使用类型化数据集(从xsl生成)时,由于类型化数据表嵌套在数据集内部,因此通常在数据集级别上工作。
数据集对于调试很有用。 在中间窗口中,您可以调用combinedDataSet.GetXml()
进行查看或将其保存到文件中以更好地分析内容。 我不确定新的dotnet-4是否允许Table.GetXml()但最多dotnet-3.5 table.GetXml()不存在。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.