您的位置:首页精文荟萃软件资讯 → ASP3.0给我们带来的新技术之一---Data Shaping技术

ASP3.0给我们带来的新技术之一---Data Shaping技术

时间:2004/10/7 19:04:00来源:本站整理作者:蓝点我要评论(0)


            
             
              
             
            

               
               

            



            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 "
    "
    While Not rsPublishers.EOF
    Response.Write "
  • " & rsPublishers("Pub_Name")
    Response.Write "
      "
      '下面开始显示子表的数据
      Set rsTitles = rsPublsihers("rsTitles").Value
      While Not rsTitles.EOF
      Response.Write "
    • " & rsTitles("title")
      rsTitles.MoveNext
      Wend
      Response.Write "
    "
    rsPublishers.MoveNext
    Wend
    Response.Write "
"

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语句,还可以使用存储过程的。

相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 360快剪辑怎么使用 36金山词霸如何屏幕取词百度收购PPS已敲定!3

最新文章 微信3.6.0测试版更新了微信支付漏洞会造成哪 360快剪辑怎么使用 360快剪辑软件使用方法介酷骑单车是什么 酷骑单车有什么用Apple pay与支付宝有什么区别 Apple pay与贝贝特卖是正品吗 贝贝特卖网可靠吗

人气排行 xp系统停止服务怎么办?xp系统升级win7系统方电脑闹钟怎么设置 win7电脑闹钟怎么设置office2013安装教程图解:手把手教你安装与qq影音闪退怎么办 QQ影音闪退解决方法VeryCD镜像网站逐个数,电驴资料库全集同步推是什么?同步推使用方法介绍QQ2012什么时候出 最新版下载EDiary——一款好用的电子日记本