C#:DataSet和DataTable区别和用法_wzk456的博客-程序员秘密

技术标签: c#  编程  

你可以把DataTable和DataSet看做是数据容器,比如你查询数据库后得到一些结果,可以放到这种容器里,那你可能要问:我不用这种容器,自己读到变量或数组里也一样可以存起来啊,为什么用容器?

原因是,这种容器的功能比较强大,除了可以存数据,还可以有更大用途。举例:在一个c/s结构的桌面数据库系统里,你可以把前面存放查询结果的容器里的数据显示到你客户端界面上,用户在界面上对数据进行添加、删除、修改,你可以把用户的操作更新到容器,等用户操作完毕了,要求更新,然后你才把容器整个的数据变化更新到中心数据库,这样做的好处是什么?就是减少了数据库操作,客户端速度提高了,数据库压力减小了。

DataSet可以比作一个内存中的数据库,DataTable是一个内存中的数据表,DataSet里可以存储多个DataTable
 

DataSet:数据集。一般包含多个DataTable,用的时候,dataset["表名"]得到DataTable  
DataTable:数据表。  
一:  
SqlDataAdapter   da=new   SqlDataAdapter(cmd);  
DataTable   dt=new   DataTable();  
da.Fill(dt);  
-----------------  
直接把数据结果放到datatable中,  
二:  
SqlDataAdapter   da=new   SqlDataAdapter(cmd);  
DataSet   dt=new   DataSet();  
da.Fill(dt);  
----------------  
数据结果放到dataset中,若要用那个datatable,可以这样:dataset[0]  
更常见的用法:  
SqlDataAdapter   da=new   SqlDataAdapter(cmd);  
DataSet   dt=new   DataSet();  
da.Fill(dt,"table1");  
用的时候:这样取datatable:  
dataset["table1"]  

 

向DataTable中手动添加行内容,并进行绑定、更新、排序DataTable   dt   =   new   DataTable();
                                DataRow   dr;

                                dt.Columns.Add(new   DataColumn( "整数值 ",   typeof(Int32)));
                                dt.Columns.Add(new   DataColumn( "字符串值 ",   typeof(string)));
                                dt.Columns.Add(new   DataColumn( "日期时间值 ",   typeof(DateTime)));
                                dt.Columns.Add(new   DataColumn( "布尔值 ",   typeof(bool)));

                                for   (int   i   =   1;   i   <=   9;   i++)   {
                               
                                        dr   =   dt.NewRow();

                                        dr[0]   =   i;
                                        dr[1]   =   "项   "   +   i.ToString();
                                        dr[2]   =   DateTime.Now;
                                        dr[3]   =   (i   %   2   !=   0)   ?   true   :   false;

                                        dt.Rows.Add(dr);
                                }
                     
                                dataGrid1.DataSource   =   new   DataView(dt);
                                dataGrid1.DataBind();更多的操作:1.创建表及插入列  DataTable dt=new DataTable();
dt.Colunmns.Add("Name",System.Type.GetType("System.String"));

2.插入行

DataRow newrow = dt.NewRow();
newrow[0]="aa";
dt.Rows.Add(newrow);

3.排序

DataView dv = dt.DefaultView; 
dv.Sort = "Name  Desc"; 
DataTable dt1 = dv.ToTable();

4.指定位置插入行

DataTable dt = new DataTable("表名");
DataRow dr = dt.NewRow();
            dr[0]="安江联社户外模";
            dr[1] = "555";
            dr[2] = "200707";
            dr[3] = "0.00";
            dr[4] = "0.00";
            dr[5] = "0.00";
            dr[6] = "0.00";

dt.Rows.Add(dr);   //在最後插入行

dtb1.Rows.InsertAt(dr,j); //j为指定的行的位置插入;

dataGridView1.DataSource = dt;

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/wzk456/article/details/80655927

智能推荐

Nodejs开发微信公众号中控服务_weixin_30702413的博客-程序员秘密

本文已同步到专业技术网站www.sufaith.com, 该网站专注于前后端开发技术与经验分享, 包含Web开发、Nodejs、Python、Linux、IT资讯等板块.本项目旨在为多个微信公众号提供中控服务, 包含以下服务内容:校验后台签名配置处理微信公众号消息获取access_token获取jssdk签名自定义菜单本项目采用的技术选型为:...

JBPM工作流引擎内核设计思想及构架_foxking_yjl的博客-程序员秘密

1 前言流程引擎内核仅是“满足Process基本运行”的最微小结构,而整个引擎则要复杂很多,包括“状态存储”、“事件处理”、“组织适配”、“时间调度”、“消息服务”等等外围的服务性功能。引擎内核,仅包含最基本的对象和服务,以及用于解决流程运行问题的调度机制和执行机制。 如果,你掌握了一个流程引擎的灵魂,你才有能力理解它的全部。否则,一个引擎对你来说,可能只是一个复杂的结构,丰富多彩API、令人

python冒泡排序理解_八大排序 python实现 精讲(一)冒泡排序_weixin_39868959的博客-程序员秘密

写在前面,排序算法属于面试中绝对不会错过的一道题,不管是原理,手撕,变形,优化,全都是考点。接下来更的几篇文章争取全面考虑,从面试官的角度解析排序算法以及对应回答~如果喜欢的话可以点赞收藏关注!及时收获知识~总结先来总结一下即将展开的八大排序算法。排序算法可以依据以下几个标准划分成不同的类别(来自维基百科排序算法):计算的时间复杂度(最差、平均、和最好性能)空间复杂度(所需额外辅助存储空间)稳定性...

【三十三】thinkphp之SQL查询语句(全)_weixin_30752699的博客-程序员秘密

一:字符串条件查询 //直接实例化Model $user=M('user1'); var_dump($user-&gt;where ('id=1 OR age=55')-&gt;select());最终生成的sql语句为:SELECT * FROM `user1` WHERE ( id=1 OR age=55 )PS:...

MyBatis的一级缓存与二级缓存及优势_mybatis二级缓存优缺点_搬运工小白的博客-程序员秘密

一、MyBatis的一级缓存和二级缓存有什么区别?1.一级缓存:存在于同一个 SqlSession生命周期中,默认是开启的在同一个 SqlSession中MyBatis 会把执行的方法和参数通过算法生成缓存的键值, 将键值和结果存放在一个 Map 中, 如果后续的键值一样, 则直接从 Map(一级缓存)中获取数据;一级缓存能通过配置清除缓存,并且任何的 UPDATE, INSERT, DELETE 语句都会清空缓存2.二级缓存:发生在同一个SqlSessionFactory中,缓存以name

Centos7 上安装 Jenkins 及常见问题解决方案_gclmit的博客-程序员秘密

安装 jenkins安装方式采用 tomcat 下面放 jekins 里面放 war直接下载二进制版,上次我采用的是第一种。所以打算这次采用第二种解决方案。另外目前官网提供两种安装包,分别为长期支持版本 (LTS) 和每周更新版本。本次我安装的为 LTS 版sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat-stable/jenkins.reposudo rpm --import

随便推点

单片机 STM32 HAL GSM通讯 SIM800L_sim800l hal库_jianqiang.xue的博客-程序员秘密

无论您是想聆听与您相距遥远的房屋中发生的情况,还是仅通过静音呼叫即可激活花园中的洒水系统;然后,SIM800L GSM / GPRS模块将成为您入门物联网的坚实起点!SIM800L GSM / GPRS模块是微型GSM调制解调器,可以集成到许多IoT项目中。您可以使用此模块完成普通手机可以完成的几乎所有工作;短信,拨打或接听电话,通过GPRS,TCP / IP等连接到Internet!最重要的是,该模块支持四频GSM / GPRS网络,这意味着它可以在世界上的任何地方工作。

WIN32_LEAN_AND_MEAN宏的作用_海将河推走的博客-程序员秘密

WIN32_LEAN_AND_MEAN的作用1使用较小的头文件来加快编译速度定义WIN32_LEAN_AND_MEAN来排除这些API: Cryptography, DDE, RPC, Shell, 以及Windows Sockets.参考微软官方文档https://docs.microsoft.com/en-us/windows/win32/winprog/using-the-wi...

pytorch实现训练与测试不同输出__愚者的博客-程序员秘密

pytroch实现训练与测试的不同输出之前我们一直在说model.train(),model.eval()有利于BN与Dropout的实现。这是为什么呢?因为BN与Dropout是对训练与测试是有不同的操作的!所以我们需要区分训练与测试。在训练或测试代码之前我们规定:训练要加model.train()测试要加model.eval()这是因为这样可以将模型中的training属性置true或false。这样我们在就知道模型有没有训练了。class Model(nn.Module):

[课程][原创]windows虚拟机设置linux联网教程_FL1623863129的博客-程序员秘密

windows虚拟机设置linux联网教程课程地址:windows虚拟机设置linux联网教程--Windows视频教程-系统/网络/运维-CSDN程序员研修院课程介绍 课程目录 讨论留言你将收获1、知道虚拟机联网配置基本流程2、知道NAT模式和桥接模式有什么区别区别3、学会如何配置自己虚拟机系统ip地址4、学会一些可能存在联网问题解决方案技巧适用人群需要在虚拟机中联网的linux系统课程介绍1、简单了解虚拟机基本知识,比如什么是虚拟机,有哪些虚拟机2、帮助

js base64编码 java 解码_Javascript Base64编码与解码_拾叁SHETHAN的博客-程序员秘密

Base64 Encode and Decodevar base64EncodeChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var base64DecodeChars = new Array(-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,...

推荐文章

热门文章

相关标签