分享
 
 
 

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

王朝厨房·作者佚名  2007-01-04
窄屏简体版  字體: |||超大  

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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有