zoukankan      html  css  js  c++  java
  • ASP3.0给我们带来的新技术之一DataShaping技术

    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

    申明

    非源创博文中的内容均收集自网上,若有侵权之处,请及时联络,我会在第一时间内删除.再次说声抱歉!!!

    博文欢迎转载,但请给出原文连接。

  • 相关阅读:
    带宽利用率提升50%,腾讯云联网架构方案解析
    重构实践:基于腾讯云Elasticsearch搭建QQ邮箱全文检索
    存算分离下写性能提升10倍以上,EMR Spark引擎是如何做到的?
    秒级去重:ClickHouse在腾讯海量游戏营销活动分析中的应用
    降本提效,贝壳搜索推荐架构统一之路
    亿级用户,腾讯看点信息流推荐系统的架构挑战
    优秀程序员,如何提高架构能力?
    如何创建体元栅格?
    导出属性表字段结构
    去除镶嵌数据集中影像的黑边或白边
  • 原文地址:https://www.cnblogs.com/Athrun/p/1388310.html
Copyright © 2011-2022 走看看