C#如何查找dataset某行数据?

C#如何查找dataset某行数据?,第1张

解决如下:

private void GetRowsByFilter()

{

DataTable table = DataSet1.Tables["TABLE1"]

string expression

expression = "Name ='"+sName+"'"

DataRow[] foundRows

//使用选择方法来找到匹配的所有行。

foundRows = table.Select(expression)

//过滤行,找到所要的行。

for(int i = 0i <foundRows.Lengthi ++)

{

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。

我给你个方法,不知道可以不,我的电脑没有数据库没有测试。代码如下

数据库:

create table tb_name(

id int primary key identity,

key int,

name varchar(50)

)

insert intio tb_name(key,name) value (1,'魏巍')

insert intio tb_name(key,name) value (2,'lily')

insert intio tb_name(key,name) value (3,'lucy')

C#代码如下:

protected void Page_Load(object sender, EventArgs e)

{

if (!IsPostBack)

{

_dictionary.Add(1,"魏巍")

_dictionary.Add(2,"lucy")

var alert = ""

foreach (var name in getNames()) //循环集合

{

if (_dictionary.ContainsValue(name.name)) //判断集合中是否存在表中的数据,ContainsValue这里判断的是字典的值。

//如果判断键值可以使用ContainsKey(name.key)进行判断

{

alert += "字典集合中存在" + name.name

}

}

Response.Write(alert)

}

}

/// <summary>

/// 定义方法,从数据库中得到数据

/// </summary>

/// <returns>返回name集合</returns>

private List<Names>getNames()

{

List<Names>names = null

var str = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString

var conn=new SqlConnection(str)

const string sql = "select * from tb_name"

conn.Open()

var cmd = new SqlCommand(sql,conn)

var reader = cmd.ExecuteReader()

while (reader.Read())

{

var name = new Names

{

id = (int)reader["id"],

key =Convert.ToInt32(reader["key"]),

name = reader["name"].ToString()

}

names.Add(name)

}

return names

}

//定义集合

Dictionary<int,string>_dictionary=new Dictionary<int, string>()

//定义类映射数据库中的表

public class Names

{

public int id { getset}

public int key { getset}

public string name { getset}

}

呵呵,应该可以吧。。。顶一下吧。。。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9890257.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存