DataSet-DataTable-DataView-DataReader

[ 2008-09-02 15:30:40 | 作者: admin ]
字号: | |
DataTable
DataSet是一个DataTable的集合
在不要求关联数据时使用

DataView
DataView是DataSet中DataTable的自定义视图
可以把它想象成数据库的View

DataView 表示用于排序、筛选、搜索、编辑和导航的DataTable 的可绑定数据的自定义视图。可以将DataView 同数据库的视图类比,
不过有点不同,数据库的视图可以跨表建立视图,DataView 则只能对某一个DataTable 建立视图。DataView 一般通过
DataTable.DefaultView 属性来建立,再通过通过RowFilter 属性和RowStateFilter 属性建立这个DataTable 的一个子集。
RowFilter 属性用来筛选要查看DataTable 中哪些行的表达式,例如:"LastName =
'Smith'",这就是只查看列LastName 的值为'Smith'的那些数据行。

DataSet
用来处理数据存储中的实际数据。它表示一个数据缓存,具有类似数据库的行为。它包含表、列、关系、约束和数据。
在处理(如编辑,更新)复杂数据时使用

DataReader
用来从数据库返回只读、只进数据流。
在性能要求比较高,又只要求显示,不要求编辑的情况下用

ADO.NET 与 ADO 有很大差异。ADO.NET 提供两个对象来处理从数据源中抽取的数据:DataSet 和 DataReader 对象。前者是记录在内存中的缓存,您可以从任何方向随意访问和修改。后者是高度优化的对象,专为以仅向前方式滚动只读记录而设计。DataTable 是一个表示数据源的简单对象,而DataSet 对象是一个容器类,将一个或多个 DataTable 对象分组。DataView类用来表示定制的DataTable的自定义视图,可以绑定到特定控件(如 Windows 窗体和 Web 窗体中的数据网格)中。

基于主键的查找

DataTable tb=new DataTable();
//设置主键
tb.PrimaryKey=new DataRow[]{tb.Columns["priKey"]};
DataRow row=tb.Rows.Find("...");

//多列约束的查找
tb.PrimaryKey=new DataRow[]{tb.Columns["priKey1"],tb.Cloumns["priKey2"]};
object obj=new object[]{"key1","key2"};
DataRow row=tb.Rows.Find(obj);

动态查找
DataRow[] rows=tb.Select("id=001 and name='xiaoming'");
    //Slect返回的是DataRow数组 ""内字段相当与sql中的where之句

DataViewRowState dvrs=DataViewRowState.ModifiedOriginal|DataViewRowState.Deleted;
DataRow[] rows=tb.Select("where","order by".dvrs);
//DataRow.Select()方法是重载的,order by是sql中order by子句,dvrs是tb中row值状态的枚举

DataView对象搜索,排序
首先说明DataView 对象不维护自己的数据副本,等通过DataView访问数据时,DataView将返回DataTable中的数据.

Find方法
DataView对象的Find方法返回的不是DataRow或DataRowView对象,而返回DataView中符合条件的整形索引,不满足Find条件即返回-1;
DataView vue=new DataView(tb);

vue.Sort="ColumnKey";
int rowsIndex=vue.Find("...");
if(rowsIndex==-1)
    //not found
else
        //found; write(vue[rowsIndex]["..."]);

Finds方法,获取多值

vue.Sort="ColumnKey";
DataRow[] rows=vue.FindRows("...");
if(rows.Length==0)
          //not found
else
      //foreach 获取
          foreach(DataRowView row in rows)
               Console.Write(row["..."]);

DataRowView对象的修改
DataView vue=new DataView(tb);

//添加新行
DataRowView row=vue.AddNew();
row[".."]="..";
        ........
row.EndEdit();

//修改行
row.BeginEdit();
row["..."]="...";
row.EndEdit();

//删除行
row.Delete():

DataView中的Select方法
DataViewRowState dvrs=DataViewRowState.ModifiedOriginal|DataViewRowState.Deleted;

DataView vue=new DataView(tb,"where","order by",dvrs);


DataView vue;
vue.Table=tb;
vue.RowFilter="where";
vue.Sort="order by";
vue.RowStateFilter=dvrs;
评论Feed 评论Feed: http://blog.xg98.com/feed.asp?q=comment&id=1156

这篇日志没有评论。

此日志不可发表评论。