欢迎光临
我们一直在努力

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

建站超值云服务器,限时71元/月

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

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » ASP3.0给我们带来的新技术之一—Data Shaping技术
分享到: 更多 (0)

相关推荐

  • 暂无文章