ArrayList、Hashtable、DataTable、DataView、DataReader和DataSet,DataGrid等的区别和各自的优缺点

ArrayList是可变数组,只能通过索引来查找数据。通过Add()方法添加数据..
Hashtable是哈希表..存的是键值对…一个键对应一个值.优点就是可以通过关键字来找到对应的数据.
如:Hashtable ht = new Hashtable();
ht[“a”] = “张三”;
ht[“b”] = “李四”;
要获得张三就可以通过 ht[“a”]来得到, 而ArrayList就没有这么好用.
DataView 的好处就是能够给一个DataTable定义多个视图, 当有两个DataGrid需要显示同一个DataTable中的数据的时候,可以定义两个DataView来绑定到控件上。

DataReader用于一行一行的读取数据。
DataSet是数据集…里面放的是多个数据表.用来保存查询到的数据. 它相对于DataReader可以创建本地副本,还可以进行很多操作,比如筛选,排序等,若对数据不进行操作最好选择DataReader.DataSet是个类.
DataGrid是显示数据的控件.
datatable、一个数据的表

把dataset看作数据库,
把datatable看作数据库里的一个表
把datagridview看作显示表里数据的表格工具

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

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