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函数可以获取远程 ...
随机推荐
- 一文教你如何使用miniconda
安装python 之前安装python包,导致了python里面的包不兼容,用管理工具卸载也下载不掉,重新安装也安装不上,没有办法只能卸掉python重装. 安装Anaconda Anaconda指的 ...
- CentOS6.7编译安装mysql5.5(详解编译选项)
注意! mysql5.5之前一般都是用make编译 mysql5.5 -5.6 一般都是用cmake编译 cmake : 跨平台编译器, mysql官方提供的rpm包 mysql-client :提 ...
- 利用python制作在线视频播放器遇到的一些问题
经过前期的调研,我准备使用PyQT+PyAV+PyAudio+pillow.期间也尝试过使用ffmpeg-python,但最后还是选择了av这个更底层,自由度更大的库来完成音视频的处理. ==== ...
- 网络编程socket理论一
网络通信理论 首先说下网络之间的通信流程看图 Socket 层是位于运输层和应用层之间的,封装好的,方便使用 Socket 是什么和工作流程 Socket是应用层与TCP/IP协议族通信的中间软件抽象 ...
- Nginx on Docker 配置
docker run -d -p 8082:8082 --name two-nginx -v ~/workplace/nginx/html:/usr/share/nginx/html -v ~/wor ...
- IIS 报错 Cannot open database "test4" requested by the login. The login failed. Login failed for user 'IIS APPPOOL\test1'.
报错: Cannot open database "test4" requested by the login. The login failed. Login failed fo ...
- 第08组 Beta冲刺(2/5)
队名:955 组长博客:点这里! 作业博客:点这里! 组员情况 组员1(组长):庄锡荣 过去两天完成了哪些任务 文字/口头描述 ?按照时间进度的安排进行相应的检查 展示GitHub当日代码/文档签入记 ...
- tomcat Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986
1.情景展示 tomcat 日志时不时会报出如下异常信息,到底是怎么回事? java.lang.IllegalArgumentException: Invalid character found ...
- Mikrotik: Setup SSTP Server for Windows 10 Client
原文: http://www.dr0u.com/mikrotik-setup-sstp-server-for-windows-10-client/ Basic how-to on SSTP for a ...
- Hadoop集群上搭建Ranger
There are two types of people in the world. I hate both of them. Hadoop集群上搭建Ranger 在搭建Ranger工程之前,需要完 ...