ASP3.0给我们带来的新技术之一---Data Shaping技术
Data shaping(又可以被称为分层记录集)
如果你对ACCESS非常熟悉的话,它就类似与其中的子表。在你使用VB
进行数据库开发的时候是你的最佳选择。
这种技术有很强大的运用场合,特别适应与OLTP等企业级运用程序的开发。
它允许你使用一种树状结构来表现你的数据,所以它特别适合与
来给用户显示有关联的数据表格形式。
简单的来说,就是它有一个母表(Recordset)然后
该母表中的某个字段中可以再容纳一个子表(Recordset)
当然一般来说,该子表中的某一个字段(例如主索引)和母表中的该字段
是关联的(relationship),这样当你执行一个查询后,结果将返回一个
多记录集.这种Data shaping技术给我们带来的好处如下:
1。性能上的提高,只要合理运用该技术,就能够大大提高
    ASP连接数据库程序的性能.你也不必再为同时显示复杂的
    相互关联的数据表单而发愁了。
2。编程上的大大简化:由于它引入的分层记录集结构,
   使用树状视图来显示记录,你会发现你使用Data Shaping技术显示出来
   的数据非常的美观。
还是以前的方法,废话少说,让代码来发言把:
本例子将使用SQL Server中带的例子数据库pubs

如何使用Data Shaping编程:
准备工作如下:
1。你应该安装有MSDataShape OLEDB Provider(在MDAC2。0版本以上均带该数据源提供者)
2。你应该会编写Shape语言,注意这不是一般的SQL语句,具体的语法你可以查看
ACCESS中的帮助文件。
几个必须注意的地方
(I)建立一个MSDataShape OLEDB Provider的ConnectionString如下(呵呵,看来我的那篇
数据库连接手册又可以加点新东东了):
'这是一个很普通的连接字符串,呵呵,其中的Kanga其实就是SQL Server在微软内部的代号
strConn = "Provider=SQLOLEDB;Data Source=Kanga;" &_
      " Initial Catalog=pubs;User Id=sa;Passwprd="
'好,现在加入MSDataShape OLEDB Provider部分
strConn = "Provider=MSDataShape; Data " & strConn
好了,现在你已经设置数据的提供者为MSDataShape,
注意哦其中的数据源提供者是你真正的DSN部分。
(II)Shape语言
Shape语法你可以在ADO的帮助中可以找到详细的描述,我也不罗嗦
一般最常用的语句如下:
SHAPE {parent command} [AS parent alias]
APPEND ({child command} [AS child alias]
RELATE parent_column TO child_column) [AS parent_column_name]
一个最简单的例子如下:
SHAPE {SELECT * FROM Publishers}
APPEND ({SELECT * FROM Titles}
RELATE Pub_ID TO Pub_ID) AS rsTitles
上面的语句将Titles表作为Publishers的一个子表关联在一起,那么怎么访问它
的数据了,语法如下:
Set rsTitles = rsPublishers("rsTitles").Value
现在的rsTitles就是一个记录集,它就是子表中的数据
ASPShape.ASP文件代码如下:
<%
    Dim rsPublishers
    Dim rsTitles
    Dim strShapeConn
    Dim strShape
    Dim strConn
    
    strConn = "Provider=SQLOLEDB;Data Source=Kanga;" &_
      " Initial Catalog=pubs;User Id=sa;Passwprd="
    
    Set rsPublishers = Server.CreateObject("ADODB.RecordSet")
    strShapeConn     = "Provider=MSDataShape; Data " & strConn
    strShape         = "SHAPE {SELECT * FROM Publishers}" & _
               " APPEND ({SELECT * FROM Titles}"  & _
               " RELATE Pub_ID TO Pub_ID) AS rsTitles"
    
    
    rsPublishers.Open strShape,strShapeConn
    Response.Write "<UL>"
    While Not rsPublishers.EOF
        Response.Write "<LI>" & rsPublishers("Pub_Name")
        Response.Write "<UL>"
        '下面开始显示子表的数据
        Set rsTitles = rsPublsihers("rsTitles").Value
        While Not rsTitles.EOF
            Response.Write "<LI>" & rsTitles("title")
            rsTitles.MoveNext
        Wend
        Response.Write "</UL>"
        rsPublishers.MoveNext
    Wend
    Response.Write "</UL>"
    
    rsPublishers.Close
    Set rsPublishers = Nothing
    Set rsTitles     = Nothing
%>
大家可以运行以上的代码然后观看它的结果,再和平常的
使用SQL查询出来的相比较一下。
附注:这个时候只要再附加一点DHTML的语句,就能够做成
树状结构的收起和展开效果(就是类似与资源管理器左边的那个效果)
呵呵,这方面掉掉可是非常在行的把。

呵呵,上面介绍的只是很简单的一个子表,下面简单介绍一下
多子表的情况。
如果你的数据表中只有一个子表的话,其实使用SQL也能够来完成的,
还不能够充分显示Data Shaping技术的优势,但是如果你的母表中
同时有多个字段和其他的表有关联的话,你就可以充分看到这个技术的
威力了。
下面给出一个两个子表的例子
SHAPE {SELECT * FROM Publishers}
APPEND ({SELECT * FROM Titles}
RELATE Pub_ID TO Pub_ID) AS rsTitles,
    ({SELECT * FROM Employee}
RELATE Pub_ID TO Pub_ID) AS rsEmployees
简单把,呵呵。
这个还不算什么,要知道。如果当你的数据表中的
子表还有子表时,(这就是所谓的层状结构的记录集嘛)
使用Data Shaping技术你会发现更加的方便。这也是为什么
我在开始的时候说的该技术特别适用与OLTP和企业级复杂的数据库开发的缘故了。
下面是一个两层子表的例子
SHAPE {SELECT * FROM Publishers}
APPEND (( SHAPE {SELECT * FROM Titles}
      APPEND ({SELECT * FROM Sales}
      RELATE Title_ID TO Title_ID) AS rsSales)
RELATE Pub_ID TO Pub_ID) AS rsTitles

其实,不仅可以在Data Shaping中使用SQL语句,还可以使用存储过程的。

GOOGLE SEARCH ASP SHAPE

ASP3.0给我们带来的新技术之一---DataShaping技术相关推荐

  1. C#3.0 为我们带来什么(5) —— 匿名类型

    C#3.0 为我们带来什么(5) -- 匿名类型 var employee= new{Age =25,Name = "james" } 无须显示声明一个类,而且在初始化器里面可以获 ...

  2. C#3.0 为我们带来什么(2) —— 自动属性

    C#3.0 为我们带来什么(2) -- 自动属性 public int ID { get; protected set; }         public string Name { get; set ...

  3. C#3.0 为我们带来什么(3) —— 初始化器

    C#3.0 为我们带来什么(3) -- 初始化器 对比代码 c#2.0         Employee e1;         private void ee1()         {        ...

  4. 华为emui10鸿蒙,不亚于华为鸿蒙OS的EMUI10.0,到底带来了哪些惊喜?

    万众瞩目的华为开发者大会完美落幕,这次大会上华为发布诸多重磅炸弹,比如HarmonyOS鸿蒙系统.EMUI10.0.HMS等,算上之前发布的华为方舟编辑器,这些都是华为花费大量人力财力苦心多年研发出的 ...

  5. 《OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例》一6.6 本章小结

    本节书摘来异步社区<OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例>一书中的第6章,第6.6节,作者: 吴亚峰 责编: 张涛,更多章节内容可以访问云栖社区"异步社 ...

  6. 《OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例》——6.5节光照的每顶点计算与每片元计算...

    本节书摘来自异步社区<OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例>一书中的第6章,第6.5节光照的每顶点计算与每片元计算,作者 吴亚峰,更多章节内容可以访问云栖社区&q ...

  7. 《OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例》一第6章 让场景更逼真——光照效果...

    本节书摘来异步社区<OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例>一书中的第6章,第6.1节,作者: 吴亚峰 责编: 张涛,更多章节内容可以访问云栖社区"异步社 ...

  8. 众享比特董事长严挺出席2022中国计算机大会“元宇宙、Web3.0、NFT:机遇还是泡沫?”技术论坛

    12月10日晚,为期三天的2022中国计算机大会(2022CNCC)成功落下帷幕.众享比特董事长严挺出席"元宇宙.Web3.0.NFT:机遇还是泡沫?"技术论坛并参与专题研讨. 第 ...

  9. 深入解析android 5.0系统 pdf,深入解析Android 5.0系统 刘超 中文pdf_源雷技术空间

    资源名称:深入解析Android 5.0系统 刘超 中文pdf <深入解析Android 5.0系统>详细剖析了最新Android 5.0 系统主要框架的原理和具体实现.本书共24章,覆盖 ...

最新文章

  1. mysql+dump+选项_mysqldump 备份常用选项以及备份脚本
  2. 新型智能头盔可快速评估患者中风的大小、位置和类型
  3. crack笔记1 常用脱壳方法
  4. 测试面试话题5: 如何不漏测
  5. linux 1080ti显卡黑屏,Ubuntu 17.04+GTX1080Ti 安装辛酸之路
  6. [css] 说说你对媒体查询的理解
  7. Missing binding node_modules/node-sass/vendor/darwin-x64-72/binding.node
  8. 小程序中利用Moment.js格式时间
  9. linux之EXT2文件系统--理解block/block group/索引结点inode/索引位图
  10. linux 共享内存为分配,Linux在x86_64上共享内存分配
  11. Java常用算法三:01背包问题
  12. 数据库高可用实战案例——架构优化之清爽一夏
  13. 思维导图的用处是什么?绘制思维导图技巧分享
  14. matlab仿真高斯脉冲,高斯脉冲comsol仿真
  15. Excel怎么合并单元格
  16. 域名备案和网站备案有什么区别?
  17. 网吧大哥服务器维修,《绝地求生》服务器又崩溃!网吧老板快要哭了
  18. 《缠中说禅108课》22:将 8 亿的大米装到 5 个庄家的肚里
  19. 达芬奇密码 第七十一章
  20. 关于CAJViewer阅读器如何修改做标记的颜色?

热门文章

  1. 干货丨零基础学习大数据,搭建Hadoop处理环境
  2. python库pickle的用法
  3. ​数据集拥有自己的世界观?不,其实还是人的世界观
  4. 中国世界工厂地位为什么不会动摇
  5. 智能经济的动力,从人工智能到超级智能
  6. 发表了一篇英文长文:语义信息G理论和逻辑贝叶斯推理for统计学习
  7. 了解因果论:从珀尔的《为什么》开始
  8. 学界 | UC伯克利发布一个低成本家居机器人,会叠衣服、会泡咖啡
  9. CES新观察:智能应用全面开花 “陆海空”新品值得关注
  10. 2020世界机器人大赛总决赛完美闭幕,MakeX挑战赛连续5年成为WRC官方合作赛项