C#如何查找dataset某行数据?
解决如下:
private void GetRowsByFilter()
{
DataTable table = DataSet1.Tables["TABLE1"];
string expression;
expression = "Name ='"+sName+"'";
DataRow[] foundRows;
//使用选择方法来找到匹配的所有行。
foundRows = table.Select(expression);
//过滤行,找到所要的行。
for(int i = 0; i < foundRows.Length; i ++)
{
string str1 = Console.WriteLine(foundRows[i]["Name"]).ToString();
string str2 = Console.WriteLine(foundRows[i]["Age"]).ToString();
string str3 = Console.WriteLine(foundRows[i]["Sex"]).ToString();
string str4 = Console.WriteLine(foundRows[i]["ID"]).ToString();
label5.Text = string.Format("Name:({0}) Age:({1})Sex:({2}) ID:({3})", str1, str2, str3,str4);
}
}
数据模型
因为DataSet可以看做是内存中的数据库,也因此可以说DataSet是数据表的集合,它可以包含任意多个数据表(DataTable),而且每一 DataSet中的数据表(DataTable)对应一个数据源中的数据表(Table)或是数据视图(View)。数据表实质是由行(DataRow)和 列(DataColumn)组成的集合为了保护内存中数据记录的正确性,避免并发访问时的读写冲突,DataSet对象中的DataTable负责维护每一条记录,分别保存记录的初始状态和当前状态。从这里可以看出DataSet是与只能存放单张数据表的Recordset是截然不同的概念。
DataSet对象结构还是非常复杂的,在DataSet对象的下一层中是DataTableCollection对象、 DataRelationCollection对象和ExtendedProperties对象。上文已经说过,每一个DataSet对象是由若干个 DataTable对象组成。DataTableCollection就是管理DataSet中的所有DataTable对象。表示DataSet中两个 DataTable对象之间的父/子关系是DataRelation对象。它使一个DataTable 中的行与另一个DataTable中的行相关联。这种关联类似于关系数据库中数据表之间的主键列和外键列之间的关联。 DataRelationCollection对象就是管理DataSet中所有DataTable之间的DataRelation关系的。在 DataSet中DataSet、DataTable和DataColumn都具有ExtendedProperties属性。 ExtendedProperties其实是一个属性集(PropertyCollection),用以存放各种自定义数据,如生成数据集的SELECT 语句等。DataRow表示DataType中实际的数据,我们通过DataRow将数据添加到用DataColumn定义好的DataTable。
2.三大特性
通过上面几节中的介绍和本节中的分析,我们可以总结出DataSet对象的三大特性:
(1) 独立性。DataSet独立于各种数据源。
(2) 离线(断开)和连接。
(3) DataSet对象是一个可以用XML形式表示的数据视图,是一种数据关系视图。
3.使用方法
在实际应用中,DataSet使用方法一般有三种:
(1) 把数据库中的数据通过DataAdapter对象填充DataSet。
(2) 通过DataAdapter对象操作DataSet实现更新数据库。
(3) 把XML数据流或文本加载到DataSet。