C#DataTable使用方法详解
在项目中常常常使用到DataTable,假设DataTable使用得当,不仅能使程序简洁有用,并且可以提高性能,达到事半功倍的效果,现对DataTable的使用技巧进行一下总结。
1、添加引用
|
1
2
|
using System.Data;using System.Data.SqlClient;//连接数据库
|
2、创建表
|
1
2
3
4
|
//创建一个空表DataTable dt = new DataTable();//创建一个名为"Table_New"的空表DataTable dt = new DataTable("Table_New"); |
3、创建列
|
1
2
3
4
5
6
7
8
9
10
|
//1.创建空列DataColumn dc = new DataColumn();dt.Columns.Add(dc);//2.创建带列名和类型名的列(两种方式任选其一)dt.Columns.Add("column0", System.Type.GetType("System.String"));dt.Columns.Add("column0", typeof(String));//3.通过列架构添加列DataColumn dc = new DataColumn("column1",System.Type.GetType("System.DateTime"));DataColumn dc = new DataColumn("column1", typeof(DateTime));dt.Columns.Add(dc); |
4、创建行
|
1
2
3
4
5
6
7
8
9
|
//1.创建空行DataRow dr = dt.NewRow();dt.Rows.Add(dr);//2.创建空行dt.Rows.Add();//3.通过行框架创建并赋值dt.Rows.Add("张三",DateTime.Now);//Add里面参数的数据顺序要和dt中的列的顺序对应 //4.通过复制dt2表的某一行来创建dt.Rows.Add(dt2.Rows[i].ItemArray); |
5、赋值和取值
|
1
2
3
4
5
6
7
8
9
10
|
//新建行的赋值DataRow dr = dt.NewRow();dr[0] = "张三";//通过索引赋值dr["column1"] = DateTime.Now; //通过名称赋值//对表已有行进行赋值dt.Rows[0][0] = "张三"; //通过索引赋值dt.Rows[0]["column1"] = DateTime.Now;//通过名称赋值//取值string name=dt.Rows[0][0].ToString();string time=dt.Rows[0]["column1"].ToString(); |
6、筛选行
|
1
2
3
4
5
6
7
8
|
//选择column1列值为空的行的集合DataRow[] drs = dt.Select("column1 is null");//选择column0列值为"李四"的行的集合DataRow[] drs = dt.Select("column0 = '李四'");//筛选column0列值中有"张"的行的集合(模糊查询)DataRow[] drs = dt.Select("column0 like '张%'");//如果的多条件筛选,可以加 and 或 or//筛选column0列值中有"张"的行的集合并按column1降序排序DataRow[] drs = dt.Select("column0 like '张%'", "column1 DESC"); |
7、删除行
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
//使用DataTable.Rows.Remove(DataRow)方法dt.Rows.Remove(dt.Rows[0]);//使用DataTable.Rows.RemoveAt(index)方法dt.Rows.RemoveAt(0);//使用DataRow.Delete()方法dt.Row[0].Delete();dt.AcceptChanges();//-----区别和注意点-----//Remove()和RemoveAt()方法是直接删除//Delete()方法只是将该行标记为deleted,但是还存在,还可DataTable.RejectChanges()回滚,使该行取消删除。//用Rows.Count来获取行数时,还是删除之前的行数,需要使用DataTable.AcceptChanges()方法来提交修改。//如果要删除DataTable中的多行,应该采用倒序循环DataTable.Rows,而且不能用foreach进行循环删除,因为正序删除时索引会发生变化,程式发生异常,很难预料后果。for (int i = dt.Rows.Count - 1; i >= 0; i--){ dt.Rows.RemoveAt(i);} |
8、复制表
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
//复制表,同时复制了表结构和表中的数据DataTable dtNew = new DataTable();dtNew = dt.Copy();//复制表DataTable dtNew = dt.Copy(); //复制dt表数据结构dtNew.Clear() //清空数据for (int i = 0; i < dt.Rows.Count; i++){ if (条件语句) { dtNew.Rows.Add(dt.Rows[i].ItemArray); //添加数据行 }}//克隆表,只是复制了表结构,不包括数据DataTable dtNew = new DataTable();dtNew = dt.Clone();//如果只需要某个表中的某一行DataTable dtNew = new DataTable();dtNew = dt.Copy();dtNew.Rows.Clear();//清空表数据dtNew.ImportRow(dt.Rows[0]);//这是加入的是第一行 |
9、表排序
|
1
2
3
4
5
6
7
8
9
10
|
DataTable dt = new DataTable();//创建表dt.Columns.Add("ID", typeof(Int32));//添加列dt.Columns.Add("Name", typeof(String));dt.Columns.Add("Age", typeof(Int32));dt.Rows.Add(new object[] { 1, "张三" ,20});//添加行dt.Rows.Add(new object[] { 2, "李四" ,25});dt.Rows.Add(new object[] { 3, "王五" ,30});DataView dv = dt.DefaultView;//获取表视图dv.Sort = "ID DESC";//按照ID倒序排序dv.ToTable();//转为表 |
C#DataTable使用方法详解的更多相关文章
- C# DataTable使用方法详解--删除表数据
在项目中常常常使用到DataTable,假设DataTable使用得当,不仅能使程序简洁有用,并且可以提高性能,达到事半功倍的效果,现对DataTable的使用技巧进行一下总结. 1.添加引用 1 u ...
- session的使用方法详解
session的使用方法详解 Session是什么呢?简单来说就是服务器给客户端的一个编号.当一台WWW服务器运行时,可能有若干个用户浏览正在运正在这台服务器上的网站.当每个用户首次与这台WWW服务器 ...
- Kooboo CMS - Html.FrontHtml[Helper.cs] 各个方法详解
下面罗列了方法详解,每一个方法一篇文章. Kooboo CMS - @Html.FrontHtml().HtmlTitle() 详解 Kooboo CMS - Html.FrontHtml.Posit ...
- HTTP请求方法详解
HTTP请求方法详解 请求方法:指定了客户端想对指定的资源/服务器作何种操作 下面我们介绍HTTP/1.1中可用的请求方法: [GET:获取资源] GET方法用来请求已被URI识别的资源.指定 ...
- ecshop后台增加|添加商店设置选项和使用方法详解
有时候我们想在Ecshop后台做个设置.radio.checkbox 等等来控制页面的显示,看看Ecshop的设计,用到了shop_config这个商店设置功能 Ecshop后台增加|添加商店设置选项 ...
- (转)Spring JdbcTemplate 方法详解
Spring JdbcTemplate方法详解 文章来源:http://blog.csdn.net/dyllove98/article/details/7772463 JdbcTemplate主要提供 ...
- C++调用JAVA方法详解
C++调用JAVA方法详解 博客分类: 本文主要参考http://tech.ccidnet.com/art/1081/20050413/237901_1.html 上的文章. C++ ...
- windows.open()、close()方法详解
windows.open()方法详解: window.open(URL,name,features,replace)用于载入指定的URL到新的或已存在的窗口中,并返回代表新窗口的Win ...
- CURL使用方法详解
php采集神器CURL使用方法详解 作者:佚名 更新时间:2016-10-21 对于做过数据采集的人来说,cURL一定不会陌生.虽然在PHP中有file_get_contents函数可以获取远程 ...
随机推荐
- maven仓库报错 sqljdbc4、ojdbc6、tomcat-jdbc-8.5.14
报错:Cannot resolve com.microsoft.sqlserver:sqljdbc4:4.0 和 Missing artifact com.microsoft.sqlserver: ...
- Nios II IDE代码优化,quartus ii 11.0版本IDE
开发Altera Nios II软件可使用Nios II IDE或 Nios II Software BuildTools for Eclipse(即:Nios II SBT for Eclipse) ...
- The Best Blockchain Open Source Projects
https://101blockchains.com/blockchain-open-source/ Blockchain has been the buzzword of the year for ...
- 费马平方和定理&&斐波那契恒等式&&欧拉四平方和恒等式&&拉格朗日四平方和定理
费马平方和定理 费马平方和定理的表述是:奇素数能表示为两个平方数之和的充分必要条件是该素数被4除余1. 1. 如果两个整数都能表示为两个平方数之和的形式,则他们的积也能表示为两个平方数之和的形式. $ ...
- apt-get update失败处理:*** Error in `appstreamcli': double free or corruption (fasttop): 0x00000000015c4bf0 ***
好像只要卸载一个东西就可以了(至少我的是这样): sudo apt-get purge libappstream3 再重新执行update命令, sudo apt-get update 参考链接: 1 ...
- POJ1463-Strategic game-(树形dp)
http://poj.org/problem?id=1463 题意:有一棵n个结点的树,要在这棵树上放士兵守卫,一个士兵可以守卫自己所在的位置以及与之相邻的点.问最少放多少个士兵? 题解:对于每个点, ...
- JS常用关键字总结
in: 案例1.遍历对象: for(key in obj) { console.info( key+":"+obj[key]; ) }; 案例2.判断对象中是否有属性: " ...
- opengl第一个工程
#include <iostream> #include <glad/glad.h> #include <GLFW/glfw3.h> void framebuffe ...
- MySQL版本问题导致的SQLException
背景 学习使用 SpringCloud 时,使用 消费者 调用 生产者 时抛出 SQLException,持久层框架为 MyBatis,数据库为最新版本的 MySQL 版本如下: Server v ...
- PATA1028 List Sorting
Excel can sort records according to any column. Now you are supposed to imitate this function. Input ...