胡乱理解ADO.NET(三)

上一篇我们讲了dataset的内部构成和如何往里面填充数据.当一个dataset被填充上数据后我们就可以用个数据绑定控件来绑定到dataset里的datatable了,然后就可以显示出里面的数据了.比如:GridView1.DataSource = ds.Tables[0].DefaultView,这样数据被显示出来了.很奇怪ds.Tables[0].DefaultView怎么多个DefaultView这玩意.有什么作用?我们把它去掉直接用ds.Tables[0]发现也可以.那这个东西有什么用?官方的解释是:获取可能包括筛选视图或游标位置的表的自定义视图.

简单的说就是:获取表的视图.什么叫表的视图?表指的就是datatable,也就是datatable的视图.datatable就是datatable还要视图干什么?有什么作用?可以这么解释,datatable是存放是数据的,而且存放在内存中,可以被程序去处理.但是datatable并不能把这些数据呈现出来被我们肉眼看到.那我们要把这些数据显示出来被我们看到,那就要用视图了.视图嘛,字面意思就是,可视化图形的意思.现在知道,视图的作用就是把datatable里的数据显示出来能被我们看到的.为了能有个形象的理解,打个不准确的比喻吧.水,是无色透明的.那么我们怎么能看到水呢?

我们用个杯子去装水,是不是就能看到水的形状了.是什么形状呢?当然取决于杯子的形状,用圆形杯子装水,我们看到的水的形状就是圆柱体的.用方形杯子装水,我们看到的水形状就是立方体的.现在我告诉你,datatable里的数据就相当于水,视图就相当于杯子.那么要让数据(水)显示出来给我们看到,是不是要用个视图(杯子)去装数据啊.现在是否对视图有个感性的认识了,它的主要作用就是显示数据的.说白了视图就是格式化输出数据的.可以联想到html语言就相当于视图,而里面的文字就相当于数据.例如在html中有:<b>数据</b>那么'数据'二字显示的就是粗体的.为什么显示粗体?因为html(视图)能让它(数据)显示,并能控制它(数据)显示的样式.(插一句,html的作用是用来显示数据的(图片,文字.等等都行)的,那么数据放哪呢?

可以从数据库里读出数据来然后通过html显示,也可以把数据存放xml文件里,现在就很流行用xml来存放数据,用html来显示.也就是xml+html技术.xml现在是很火的一个东东,后面我们再详细探讨探讨xml的一些知识).上面讲了那么多废话无非是想说:视图是用来显示数据的.那么我有个视图没有数据,可有意义?没有.光有视图没有任何数据,视图去显示谁呢?就是无用的废物了.那么我们有数据没有视图可有意义呢?有,我们不想显示这些数据,就不一定非要搞个视图了吧.

可见,我们有个视图必然要有数据才有意义.程序中就是这样,有视图肯定有数据.而数据我们可以想象成就装在视图中(水装在杯子中嘛),我们就一组数据,可以搞几个不同的视图啊,当把数据放到不同的视图里,显示出来的就是不一样的效果的.同样,把一个视图改变了那么这个视图里的数据显示出来的的样式就改变了,可见视图对数据来说还是瞒重要的一个东西.在程序中,视图不仅能显示数据,也能实现对数据的增删改查.因为可以看做数据装在视图里嘛,视图当然能对数据进行操作.回想下,我们说过dataset可以看做是个小型的数据库.既然是数据库,肯定能增删改查嘛,怎么做到呢?把数据放到视图里用视图来操作.

(上面说的真是够罗嗦了,发现我越来越唐僧了,只怪我脑子不灵活,理解能力差,所以把知识表达的容易理解才行)

好了讲了这么多,我们来看看在程序中到底怎么去用视图.

在程序中,表示视图的类是:DataView.也就是说在程序中DataView就是视图,那么数据呢,数据当然是datatable中的数据,而datatable只管把数据装起来,不会显示.所以我们可以创建一个视图把datatable放到视图里,也就是把数据放进去了.(datatable 可以想象成一个无形的表)

程序中创建一个视图就是 DataView dv = new DataView(),当然仅有视图没数据是没有意义的.所以我们创建视图的时候,都装载一个datatable进去,像这样创建的DataView dv = new DataView(datatable).这样就是把datatable配套一个视图对象(dataview)了.

上面说了,视图可以控制变数据的显示样式的.我把视图的排列方式改变了,那么数据显示出来的样式也就改变了.DataView中有个方法叫DataView.Sort(),就是用来对数据排序的.可形象的想象为DataView里面是一层一层的像书架一样.书就是数据摆在书架的层上.调用这个方法后,相当于把书架里的每层按规律换一下.(上层换到下层...)

我们看看下面代码,代码中我们创建一个dataset,然后添加两个表分别是table1和table2,table1是学生表,有两个字段,id和name;table2是借书表,里有三个字段,id,tb1_id,bookname.然后用gridview1绑定到table1,用gridview2绑定到table2.

我们对table2进行排序,把table2里的字段添加到DropDownList中,我们通过选择DropDownList里的值,来设定按哪个字段来排序.

时间: 2025-01-29 20:14:51

胡乱理解ADO.NET(三)的相关文章

胡乱理解ADO.NET(一)

严重注意:下述内容可能完全错误,我只是乱理解一翻便于自己记忆.不能作为任何网友的参考,那便是严重误人子弟了! 希望有懂的人看到后能告诉我真正的原理.谢谢! 对数据库的操作貌似是程序员必须要掌握的知识,也是绝大部分的项目中要用到的知识.在.net框架下程序与数据库之间的互操作称为:ADO.NET. 也做过一些项目,对于程序与数据库的操作,也会用.不明白的地方上网搜一下,查查资料,再把高手写的代码照复制下来照葫芦画瓢是了.这样也满足了一般项目的开发.但是一段时间不用后,又忘了,再去看看代码是怎么搞的

胡乱理解ADO.NET(二)

在上篇文章中说了程序对数据库的操作后,我们通常要返回操作信息.例如:返回受影响的行数或者返回查询的数据.SqlDataReader可以对返回的数据进行操作,但只是只读的,而且必须要保持连接才行.那么能不能更灵活的对返回的数据操作呢?答案是肯定的. 既然我要对返回的数据进行灵活的操作,那么我们是不是要搞个东西来存放这些数据.要不然程序得到数据库里的数据后放哪?我们用什么来存放这些数据呢?有个类叫做dataset官方的解释叫做:表示数据在内存中的缓存.看这个解释多少对我来说多少有点茫然.我个人把它通

胡乱理解ADO.NET(四)

在上两篇文章中,对于dataset做了个简单的探讨.很多次提到,可以把dataset看作是内存中的数据库.既然是数据库,那么首要任务就是存储数据用的.而之前,我所举的的例子都是手工往dataset里添加数据,其实这个并不是我们最想要的.我们最想要的是能用程序把数据库里的数据读取出来然后装到dataset里,然后用程序来处理dataset里的数据.当处理好dataset里的数据后,我们还想把这些数据再更新到数据库中. 这样就能与数据库断开连接而处理数据了(把数据库中的数据读取出来并装到datase

ASP.NET趣味理解-ADO.NET对象模型

数据库的应用在我们的生活和工作中已经无处不在,无论是一个小企业的OA系统,还是中国移动的运营系统,似乎都离不开数据库的应用.对于大多数应用程序来说,不管它们是Windows桌面应用程序,还是Web应用程序,存储和检索数据都是其核心功能.所以针对数据库的开发已经成为软件开发的一种必备技能.如果说过去是"学好数理化,走遍天下都不怕",那么,对于今天的软件开发者而言就是"学好数据库,走到哪儿都不怵!". ADO.NET是微软新一代.NET数据库的访问架构,ADO是Acti

简单理解Web Service三种实现方式

  Web Service概念: 根据W3C的定义,Web服务(Web service)应当是一个软件系统,用以支持网络间不同机器的互动操作.网络服务通常是许多应用程序接口(API)所组成的,它们通过网络的远程服务器端,执行客户所提交服务的请求.简单的来说就是服务器端向客户端提供服务. Web Service实现方式: (1)远程过程调用(RPC) RPC协议就是为了解决不同的客户端跨平台的访问服务器而产生的,最初的Web Service都是采用RPC部署,它是一种通过网络从远程计算机程序上请求

理解VMware的三种工作模式

简单了解下VMware的三种工作模式 bridged(桥接模式) 桥接模式就是将各个虚拟机和物理网卡关联起来,在这种模式下虚拟出来的操作系统就像局域网内的一台主机一样,通过配置IP地址.子网掩码,并且要和宿主机在同一网段,这样就可以访问局域网内的任何一台主机.通过配置TCP/IP配置信息,可以通过网关访问互联网. 各个虚拟机的网络配置方式可以是手工配置或者DHCP自动获取. 使用环境:当你想在局域网内搭建一个虚拟服务器,为局域网内的用户提供服务时,就需要选择桥接模式. host-only(仅主机

请教,怎样理解远程控制的三个基本要素(程序)

问题描述 各个前辈,小白菜请教一些联网控制基本问题对于联网远程控制程序,现在小白理解如下:1.在现场终端设备中,需要运行一个客户端程序client.exe2.在控制机房中,有一台或者几台电脑,它们需要运行二个程序,其中A)server.exe(上位机服务)完成与客户端的联网通信和数据备份(保存到数据库)B)在机房里还需要有个人机操作界面及其它功能的软件clientManager.exe(终端管理软件)3.现场设备中的客户端程序client.exe,定期地(短连接)向机房中的服务端发送连接命令.每

从Java视角理解系统结构(三)伪共享

从Java视角理解系统结构连载, 关注我的微博(链接)了解最新动态 从我的前一篇博文中, 我们知道了CPU缓存及缓存行的概念, 同时用一个例子说明了编写单线程Java代码时应该注意的问题. 下面我们讨论更为复杂, 而且更符合现实情况的多核编程时将会碰到的问题. 这些问题更容易犯, 连j.u.c包作者Doug Lea大师的JDK代码里也存在这些问题. MESI协议及RFO请求 从前一篇我们知道, 典型的CPU微架构有3级缓存, 每个核都有自己私有的L1, L2缓存. 那么多线程编程时, 另外一个核

Hibernate的三种状态理解及转换解析

首先先说下hibernate中的三个状态,只有完全理解了这三个状态,才能在项目中充分利用hibernate这个工具来完成项目进度. 1.瞬时态,也叫临时态等,不受hibernate session管制的状态,即某个实例跟session没有任何关联,比如new产生的实例. 2.持久态,session中持久化了的实例,相当于数据库中的记录,修改实例的任何属性都会导致数据库记录的变更. 3.托管态,也叫游离态等,持久化对象脱离了Session的对象.如Session缓存被清空的对象.特点:已经持久化,