ASP.NET学习记录:DataSet和DataTable理解和使用

1 前言

ASP.NET学习记录:DataSet和DataTable理解和使用

在项目开发中,我们和数据打交道是不可避免的,最频繁的操作可能是获取数据库的数据然后返回前端展示,但是往往数据库查询得来的基础数据可能不能直接满足前端展示数据的需求,因此需要我们在后端稍加处理.

要求粗数据细加工,那就涉及到如何sql相应的数据中去数据,以及处理完之后重新向原结构中写回细加工的数据,能干这活就是本文要讲的DataSet和DataTable.

2 基本概念

DataSet是数据集,DataTable是数据表,DataSet存储多个DataTable。DataSet和DataTable像是专门存储数据的一个容器,在你查询数据库得到一些结果时可以存在里面。

DataTable是内存中的一个关系数据表,可以独立创建使用,也可以作为DataSet的一个成员使用.

DataTable其实就我们常见的数据表,自然它由DataRow和DataColumn组成.DataRow表示 DataTable 中的一行数据, DataColumn表示 DataTable 中列的架构.

3 常用操作

3.1 DataSet常用方法

注意:DataSet是表的集合,除了添加表和删除表等外,一般要对某张表使用时要记得指定对那张表操作,指定的方式,可以数组下标或直接表名的方式指出

DataSet ds=new DataSet();
//1 获取Tables[0]第一行的第一列的值
dataset.Tables[0].Rows[0][0].ToString();   
//2 第一行对应列的字段名
dataset.Tables[0].Rows[0]["列名"].ToString();   
dataset.tables(0).rows(0).item("第几列的列名")
//3 获取某张表TableName的行、列总数
dataset.Tables[ "TableName "].Rows.Count
dataset.Tables[ "TableName "].Columns.Count
//4 取某一列的值,注意取某一列的值一定是先指定了行,如Rows[0]第一行,不然无法取值
dataset.Tables["PersonInfo"].Rows[0]["age"].ToString();
//5 向DataSet中插入新的一列
ds.Table[0].Columns.Add("字段名","字段类型");

Tips:这是只插入了新的一列,其实并没有给这个新插入列赋值,一般我们会通过遍历所以行,然后给所以行依次赋值

3.2 DataTable常用方法

我们的操作一般还是对单张具体指定的表进行细加工的,这部分项目中取值和添加值会比较频繁,同时其实可以看到上面的Dataset除了额外添加/删除表的操作是特性外,上面都是对指定的表进行操作的,也就是说他的操作就是DataTable的操作.

而DataTable的操作主要是在行列DataRow/DataColumn操作,主要也还是上面dataset的操作

//1 取DataTable中的第一行第一列
dt.Rows[0][0].Tostirng()
//2 行/列总数
dt.Rows.Count
dt.Columns.Count
//3 取某一列的值,其中列的指定可以用字段名或数组下标索引
dt.Rows[0]["age"].ToString();

Tips: 注意:行和列的计算,都是从0开始

 

4 一些记录

 

在表中,row才是代表数据的,也就是说数据永远存在于行中column是代表数据结构的,告诉我们在一行中某个位置的数据类型是什么.

textBox2.Text = dt.Rows[0]["username"].ToString();

这个不就可以了吗?只需改变[]内的参数就成了,比如你要"username"列的所有数据:

foreach(datarows row in dt.rows){
  textBox.text=row["username"].tostring();
}

这样就会把username列内的所有内容在textbox中输出一编,当然.这里只能显示最后一个.

数据库的表插入到dataset

SqlDataAdapter da = new SqlDataAdapter(s,conn); DataSet ds = new DataSet(); da.Fill(ds,"表名");

一些写法:

新增一列  然后动态给查询出来的所有行的该列赋值

DataTable dt = King.DataBase.SqlServer.GetDataSet(cmd).Tables[0];
dt.Columns.Add("经营期限");
foreach (DataRow dr in dt.Rows)
{
	if (dr["经营期限起"].ToString() != "" && dr["经营期限止"].ToString() != "")
	{
		dr["经营期限"] = DateTime.Parse(dr["经营期限起"].ToString()).ToString("yyyy-MM-dd") + " — " + DateTime.Parse(dr["经营期限止"].ToString()).ToString("yyyy-MM-dd");
	}
	else
	{
		dr["经营期限"] = "";
	}
}

判断当前查询的行是否为空

DataTable dt = King.DataBase.SqlServer.GetDataSet(cmd1).Tables[0];
dt.Rows.Count != 0

还有可以根据select count(*)值还判断是否该条件下查询是否为空.

 

参考:

DataSet和DataTable详解

DataSet对象获取相应列值、行列数、列名、取出特定值这些操作的总结

我的C#之路-dataset、datatable的绑定、清空、添加、删除等操作

你可能感兴趣的:(项目实战笔记)