数据集的结构定义与实例的关系(转)

数据

数据集的结构定义与实例的关系
www.yescnet.com   CNET中文网

在.net的数据库开发中,不可避免的要使用到数据集(dataset),在阅读msdn学习数据集使用的时候,由于没有清晰的区分数据集的定义和实例,在操作中,总是这里做一个数据集,那里做一个数据集,绕来绕去,却不知所以然,待全部完成后,仔细思考一下, 才发现此数据集非彼数据集,其中一部分是数据集的定义,另一部分才是充满数据的数据集实例。因此为方便大家的理解,在这里将数据集的定义与实例分析一遍,以期有助于各位看客的.net的多层数据库开发。此文章中的例子程序是vs.net studio beta 2中的msdn 中的walkthrough(别跟我说你找不到):webforms application walkthroughs 中的vb类的。如果你有什么没看懂的,可以参考一下。

下面伴随例子程序,分析说明在不同的情况下,这些很容易搞混淆的数据集的定义和实例。
首先,我们新建一个vb工程。工程类型为Visual Basic Projects,在模板选择ASP.NET Web,命名为MyWebForm。
在visial studio.net 为你产生了许多文件之后,在工程中添加一个component。然后在component中添加一个sqlDataAdapter或OleDataAdapter,根据向导,连接上数据库,配置好数据库适配器。数据库适配器是直接面对数据库的,所有的对数据库的操作的命令比如select, update, insert, delete等等,一般都是指派给适配器。适配器配置好以后,你会发现菜单上多了数据的菜单项,将其点开,会发现有“生成数据集”的菜单项。点击后,弹出生成数据集的窗口,你可以选择新建数据集,数据集的名字是dsCustomers,此时的数据集实际上是指一个数据集的定义,也就是一个用xml格式表示的,文件名为'dsCustomers.xsd'的数据集定义文件。注意它并不包含任何的数据库中的数据,而只是描述一下将来如果哪个数据集(包含真正的数据,也就是实例)是用它来描述的,那么其中的数据是一些什么含义。选中要添加到数据集中的表,确认最后的‘将此数据集添加到设计器’前的复选框没有打勾。之所以要将此处的勾去掉,是因为它是决定是否要在设计器上建立一个数据集实例的选项,要验证这一点,你可以试一试打上勾是什么样子。如果你用默认的dataset1的数据集名称,效果很不明显,因为数据集定义的文件名叫‘dataset1.xsd’,而添加到设计器上的数据集实例取名也叫'dataset1',令人疑惑,如果你自己将数据集的名称改为'dsMyDataset',那么你会发现生成的数据集定义的文件名称叫'dsMyDataSet.xsd',而添加到设计器的数据集实例叫'dsMyDataset1',此时就很明显的表明,设计器上的数据集是一个可以容纳实际数据的数据集实例。我们因为不需要在设计器上将数据提取出来,所以不要在此选项前打勾。数据集生成之后,我要提醒一下各位,当你双击打开xsd文件看到的画面和msdn中的截图很不一样。我一直没搞懂msdn上的截图是怎么做出来的,它为什么会有两个elements,而我按照它的方法总是只出来一个element。在这里,我转悠了好久,直到确认我的并没错,其余也不想管msdn是否错了。
我们需要的此component中添加一个方法,是专门用来将传入的数据集实例填充的。编码是这样的:
Public Sub FillDataSet(ByVal dSet As dsCustomers)
SqlDataAdapter1.Fill(dSet)
End Sub
将component保存。
接下来,我们要在界面上添加数据集实例。点开webform1.aspx,从工具箱中的数据分类里拖拽一个dataset控件,弹出添加数据集窗口。选中第一个选钮,然后选择我们刚才建立的数据集定义dsCustomers,确定即可。于是webform1的下面的控件箱中有了一个以1结尾的数据集dsCustomers1,注意这个1,它表明这是一个使用先前的数据集定义的数据集实例。此时,它里面还没有数据,我们用鼠标双击webform1.aspx的页面,打开代码编辑窗口。要想将数据集实例中填满数据, 我们可以利用上一个步骤建立的component。首先申明dim mycomp as component1。由于component属于本工程,所以一切正常,如果component属于别的工程或直接在网上,那么,你必须先引用它。接下来,我们用componet中的方法填充webform1.aspx中的数据集实例。编码是:
mycomp.fillDataSet(dsCustomer1)。好了,因为这个方法的传入参数是用dsCustomer定义的,而现在往里传的webform1.aspx上的实例dsCustomer1也是用dsCustomer定义的,所以dsCustomer1可以传入component,用component 中的数据适配器进行填充。
经过以上的分析,相信各位应该不会再将数据集的定义和实际使用的数据集实例搞混了。

时间: 2024-09-14 22:13:24

数据集的结构定义与实例的关系(转)的相关文章

《MySQL技术内幕:InnoDB存储引擎第2版》——3.5 表结构定义文件

3.5 表结构定义文件 因为MySQL插件式存储引擎的体系结构的关系,MySQL数据的存储是根据表进行的,每个表都会有与之对应的文件.但不论表采用何种存储引擎,MySQL都有一个以frm为后缀名的文件,这个文件记录了该表的表结构定义. frm还用来存放视图的定义,如用户创建了一个v_a视图,那么对应地会产生一个v_a.frm文件,用来记录视图的定义,该文件是文本文件,可以直接使用cat命令进行查看: [root@xen-server test]# cat v_a.frm TYPE=VIEW qu

JavaScript 闭包环境很奇特 - 相当于类与实例的关系?!

JavaScript 闭包环境很奇特 - 相当于类与实例的关系?! 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 又一个疑问贴! 不过我相信,问题并不是难在如何解决,最终就是个能解决与不能解决

中文Access2000速成教程--1.8 定义表之间的关系

access|教程|速成|中文 第八讲 定义表之间的关系 前面定义了主键,以及相应的表后,就可以制定各表部的关系,从而建立起一个关系数据库.的应用与管理关系数据库,中文Access 2000具有很强的能力,这正是中文Visual FoxPro 6与中文Excel 2000所不及的.为了建立关系数据库,首先要建立好各相关表,接着将它们全部关闭,即可按下列步骤进行操作. 注意:中文Access 2000不能在已打开的表之间创建或修改关系,所以要关闭所有打开的表,这与中文Visual FoxPro 6

link环境下关于外键和外键,能不能定义它们的依赖关系,用codefirst

问题描述 link环境下关于外键和外键,能不能定义它们的依赖关系,用codefirst link环境下关于外键和外键,能不能定义它们的依赖关系,用codefirst 解决方案 http://www.cnblogs.com/Ruiky/archive/2012/06/27/2565648.html

Java判断类和实例的关系

   通常我们使用instanceOf关键字来判断一个对象是否是类的实例,最近博主看到isInstance关键字,不解与instanceOf的区别,故度娘了一下,顺便涨了一下姿势.    Java中判断类和实例的关系有3个关键字:instanceof, isInstance以及isAssignableFrom. instanceof:用来判断对象是否是类的实例 isInstance:用来判断对象是否属于某个类型的实例 isAssignableFrom:用来判断类型间是否存在派生关系   看完上面

中文Access2000速成教程--1.8 定义表之间的关系_Access

注意:中文Access 2000不能在已打开的表之间创建或修改关系,所以要关闭所有打开的表,这与中文Visual FoxPro6有些不一样. 步骤一.按下键盘上的F11功能键,将当前操作窗口切换到"数据库"窗口. 步骤二.单击"数据库"工具栏中的"关系"按钮,参见图39. 此后,如果当前数据库中已经存在着关系表,屏幕上就将显示如图40所示的"关系"对话框.如果当前数据库没有定义任何关系,中文Access 2000将会自动显示&

mysql 复制表结构和数据实例代码_Mysql

在mysql数据库开发中,我们有时候需要复制或拷贝一张表结构和数据到例外一张表,这个时候我们可以使用create ... select ... from语句来实现,本文章向大家介绍mysql复制表结构和数据一个简单实例,  比如现在有一张表,我们要将该表复制一份,以备以后使用,那么如何使用mysql语句来实现呢?其实我们可以直接使用create ... select ... from语句来实现,具体实现方法请看下面实例.  我们先来创建一张Topic表,创建Topic表的SQL语句如下: mys

go语言变量定义用法实例_Golang

本文实例讲述了go语言变量定义用法.分享给大家供大家参考.具体如下: var语句定义了一个变量的列表:跟函数的参数列表一样,类型在后面. 复制代码 代码如下: package main import "fmt" var x, y, z int var c, python, java bool func main() {     fmt.Println(x, y, z, c, python, java) } 变量定义可以包含初始值,每个变量对应一个. 如果初始化是使用表达式,则可以省略类

C++结构体用法实例分析_C 语言

本文实例讲述了C++结构体用法.分享给大家供大家参考.具体分析如下: C++结构体提供了比C结构体更多的功能,如默认构造函数,复制构造函数,运算符重载,这些功能使得结构体对象能够方便的传值. 比如,我定义一个简单的结构体,然后将其作为vector元素类型,要使用的话,就需要实现上述三个函数,否则就只能用指针了. 复制代码 代码如下: #include <iostream>  #include <vector>   using namespace std;  struct ST  {