|
![]() |
名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
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语句,还可以使用存储过程的。 返回类别: 教程 上一教程: 用AGENT+ASP技术制作语音聊天室 下一教程: ASP做象资源治理器的树形目录 您可以阅读与"ASP3.0给我们带来的新技术之一---DATA SHAPING技术"相关的教程: · DATA SHAPING技术-访问分级 RECORDSET 中的行 · 浅谈 ASP 模板技术之参数传递 · 浅谈 ASP 模板技术之参数传递 · 聊天室要害技术[用户断线]处理 · ASP技术在论坛中的运用(二)(吐血推荐!!!!) |
![]() ![]() |
快精灵印艺坊 版权所有 |
首页![]() ![]() ![]() ![]() ![]() ![]() ![]() |