dataset 与 datatable 的区别

来源:互联网 发布:什么软件制作矢量图 编辑:程序博客网 时间:2024/05/16 01:03
单说就是:
DataSet:数据集。一般包含多个DataTable,用的时候,dataset["表名"]得到DataTable

DataTable:数据表。
一:
SqlDataAdapter da=new SqlDataAdapter(cmd);
DataTable dt=new DataTable();
da.Fill(dt);

-----------------
直接把数据结果放到datatable中,
二:
SqlDataAdapter da=new SqlDataAdapter(cmd);
DataSet dt=new DataSet();
da.Fill(dt);
----------------
数据结果放到dataset中,若要用那个datatable,可以这样:dataset[0]
更常见的用法:
SqlDataAdapter da=new SqlDataAdapter(cmd);
DataSet dt=new DataSet();
da.Fill(dt,"table1");
用的时候:这样取datatable:

dataset["table1"]

另外
dataset可以包含好多个datatable,datatable数据表,类似于数据库中的表。

dataset是数据集,数据集里包含datatable,还有数据表之间的关系等,一个数据集可以不包含表,一个或多个datatable表。datatable是数据表,它有列columns,行rows等。

对DataSet   是在内存中的小型数据库存,可以包含多个表,可以维持表与表之间的关系,可以有约束等,而datatable是它其中的一份子罢了!

DataSet不能直接用来存储数据,如果仅用DataSet,它会自动的生成一个DataTable,所以看上去就像一个DataTable。  
   
  如果有很多个DataTable需要同时绑定到某个控件,就可以把多个DataTable添加到一个DataSet中,分别起不同的名字就可以。

DataReader基于连接,它返回的数据是只读只向前的,适合简单地浏览且耗时比较短的操作。DataSet对象会将所需数据读入内存然后断开连接。它适合对数据进行复杂长时间的操作,并且需要更新数据的情况。

SqlDataReader只是建立与数据库之间的类似于一个指针关系,在没有调用Read()方法之间它不从数据读出任何数据,而在调用Read()时也只是从数据库中读出一条数据.DATATABLE是数据表的一个复本,至于DataSet可以反它看作一个数据库,因为它不但可以包括多个表而且还能包括各表之间的关系.所以在进行大量数据访问时(特别是分页方式的访问)建议使用SqlDataReader,这样可以节省大量的内存开销.