第七篇高级应用
在执行
查询之前,我们要先构件一个SQLDataSetCommand对象,在执行查询以后,我们需要把数据转移到DataSet中,我们可以使用下面的代码:我们假设有一个test数据库,在这个数据库中有一个student表.DimmyConnectionAsNewSQLConnection("server=localhost;uid=sa;pwd=;database=test")DimmyCommandAsNewSQLDataSetCommand("select*fromstudent",myConnection)DimdsAsNewDataSet()myCommand.FillDataSet(ds,"student")可能读者不禁要问:为什么要用XML文件存储数据吗?为什么不使用数据库?这是因为:对很多目的用途来说,用数据库太过浪费了..要使用一个数据库,你必须安装和支持一个分离的服务器处理进程(aseparateserverprocess),它常要求有安装和支持它的管理员(administrator).你必须
学习SQL语句,并用SQL语句写查询,然后转换数据,再返回.而如果你用XML文件存储数据,将可减少额外的服务器的负荷.还有,你还找到了一个编辑数据的简单方法.你只要使用文本编辑器,而不必使用复杂的数据库工具.XML文件很容易备份,和朋友共享,或下载到你的客户端.同样的,你可以方便地通过ftp上载新的数据到你的站点.XML还有一个更抽象的优点,即作为层次型的格式比关系型的更好.它可以用一种很直接的方式来
设计数据结构来符合你的需要.你不需要使用一个实体-关系编辑器,也不需要使你的图表(schema)标准化.如果你有一个元素(element)包含了另一个元素,你可以直接在格式中表示它,而不需要使用表的关联.注意,在很多应用中,依靠文件系统是不够充分的.如果更新很多,文件系统会因为同时写入而受到破坏.数据库则通常支持事务处理,可以应付所发生的请求而不至于损坏.对于复杂的查询统计要有反复,及时的更新,此时数据库表现都很优秀.当然,关系型数据库还有很多优点,包括丰富的查询语言,图表化工具,可伸缩性,存取控制等等.在下面这样的案例中,正如大多数中小规模的,基于发布信息的站点一样,你可能涉及的大多数数据存取都是读,而不是写,数据虽然可能很大,但相对来说并没有经常的更新变化,你也不需要做很复杂的查询,即使你需要做,也将用一个独立的查询工具,那么成熟的rdbms的优点消失了,而面向对象型的数据模型的优点则可以得到体现.最后,为你的数据库提供一个查询器外壳来进行SQL查询并将他们转化进入xmlstream也是完全有可能的.所以你可以选择这二种方式之一.XML正变成一种非常健壮的,便于编程的工具,作为某个成熟的数据库的前端工具来进行存储和查询.(oracle的x
sqlservlet即是这种技术的一个很好的例子.)7.1.3XML语法现在我们来介绍一下XMLSchemas:随着XMLSchema规范的逐渐普及,它成为W3C推荐标准的那一天已经不远了.我们来看一下这个新的定义
文档类型的方法.一,定义元素文档类型定义的
工作现在大都是由DTDs来完成的,现在的DTD在功能上有一些限制,随着XML应用的越来越广泛,这些限制逐渐阻碍了XML的发展.
第七篇高级应用
DTD的语法不同于XML的语法,因而需要文档编写者另外的学习一套符号语言.而
软件也需要另外的一个解析器来对DTD文件进行解析.在DTD中没有办法来定义能够从程序语言变量直接映射到XML数据的数据类型和数据格式.没有一组被人所熟知的基本的元素以供文档编写者选择.DTDs是XML从其前辈SGML那儿继承过来的(事实上,XML本身就是一种SGML的简化版本),这个相对比较成熟的技术能够很快的让XML运行起来,并且能够让熟悉SGML的人对XML有更多的感觉.然而,很快的人们就发现,XML需要一种更具表达能力的解决
方案,而不仅仅是DTD.定义元素需要指定元素的名称,元素的内容模式,元素的属性,以及内嵌的子元素.在XMLSchemas中,元素的内容模式是通过类型来定义的.一个服从于某个特定的schema的XML文档只能按照schema中定义的元素模式来编写,这同DTD的规则是一样的.元素可以是简单类型的,也可以使复杂类型的.在Schemas规范中定义了很多的简单类型,例如:string,integer和decimal.简单类型的元素不能在包含子元素和属性,而复杂类型的元素则能够嵌套子元素,并能够包含有属性.我们来看看一个简单的定义元素的例子:
我们知道在面向对象的观点中,有聚集和继承的概念