Username: Password:

使用ASP实现基于WEB的数据库资料系统-ASP教程,数据库相关
来源:作者: 发布时间:2007-12-25 13:36:08

 asp简介
asp(active server page)是microsoft公司推出的基于iis(internet information server)的动态网页研发技术。asp都是以isapi(internet service api)的原理实现的,他通常使用vbscript语言进行html文档的嵌入式脚本设计,文档名后缀是.asp。他的原理如图1所示。
当浏览器向web server发出.asp请求时,web server开始运行asp脚本程式,然后web server启动asp,asp将所请求的文档从头到尾进行检查,执行文档中的嵌入的asp脚本,最后将执行结果html网页返回给web server。web server再将该html网页发送给客户端。这样,用户能够根据浏览器发出的请求设计asp脚本,从而由不同的请求产生不同的脚本执行结果。asp具备许多长处(如使用简单,执行效率较高等),但他同时也具备其先天的弱点,即他使用的是脚本语言,功能有限,难以完成许多复杂的业务功能。微软为了弥补这一弱点,提供了在asp中使用activex组件的功能,从而许多复杂的功能就能够用其他许多高级语言(如visual c++)来实现,然后将这些功能包装为activex,供asp调用。ado(activex data object)就是在asp中常用的数据库访问组件。

web数据库资料系统实现的关键技术
要实现基于web的数据库资料系统,关键要解决两个方面的问题。第一要实现将客户端文档资料通过浏览器上载到web服务器,并将文档内容保存到数据库中;第二要实现从数据库中读取资料内容,并将内容发送到客户端浏览器。为说明怎样实现这两项技术,我们用一个简单的数据库进行示例(这里使用的数据库环境是ms sql server 6.5),这个数据库只有一个表(uploadfile),其结构如图2所示。
其中,id字段是关键字,自增类型;title表示资料标题;filename是上载的资料文档名;content字段怎样存放二进制资料文档内容。下面将讲述实现将客户端文档资料通过浏览器上载到web服务器,并将文档内容保存到数据库中连同怎样从数据库中读取资料内容,并将内容发送到客户端浏览器。web服务器平台是windows nt server 4.0 + iis4.0 +sql server 6.5,客户端使用ie4.0,系统调试通过。

使用asp实现文档上载到web服务器
基于web方式上载文档,要遵从rfc1867标准(ie3.0和netscape 3.0 以上版本浏览器都支持)。但iis没有提供这方面的支持。因此要使用asp实现文档上载,必须调用相应的activex组件,这个activex组件asp本身没有提供,能够自己研发(根据rfc1867标准),也能够使用第三方提供的组件。这里介绍的方法使用第三方的组件aspupload.dll,在使用前必须先在web服务器上注册(将aspupload.dll拷贝到\winnt\system32目录下,然后云运行“regsvr32 aspupload.dll”)。
其中客户端源文档如下(uploadtest.htm):



文档上载客户端


name="uploadform">

 






其中客户端文档要注意两点:
* 文档上载提交表单(form)的enctype必须指定为“multipart/form-data”
* 语句表示上载文档域,用户能够在该域中输入或选定文档。
服务器端源文档如下(uploadtest1.asp):
<%response.buffer=true%>

<%set upload=server.createobject("persits.upload.1") 创建文档上载组件
count=upload.save("e:\aspupload") 将客户端文档保存到web服务器端的本地硬盘上%>



upload test



上载了<%=count%>个文档


file has been uploaded.




其中,脚本set upload=server.createobject("persits.upload.1")创建了文档上载组件,该组件通过调用save方法将浏览器端的文档内容保存到指定路径。

将文档存在数据库中
将文档保存在数据库中主要用了aspupload组件中文档对象的todatabase方法。源文档如下:
客户端源文档(uploadtodb.htm):



文档上载客户端


name="formupload">




读取数据库中文档





服务器端源文档(uploadtodb.asp):



文档上载到数据库


<%set upload=server.createobject("persits.upload.1")
count=upload.save("e:\aspupload")
on error resume next
set fileobj=upload.files("fileupload")
sql="insert into uploadfile (title,filename,content) values ("&fileobj.path&","&fileobj.path&",?)"
response.write sql
fileobj.todatabase "dsn=fileupload;uid=sa;",sql
if err<>0 then
response.write "error saving the file:"&err.description
else
fileobj.delete
response.write "success!"
end if
%>



从数据库中读取文档内容并发送给客户端浏览器
从数据库中读取内容在发送给浏览器之前,首先必须让浏览器知道内容的数据类型,这通过向客户端发送contenttype描述实现。为简单起见,这里假设发送的内容是word文档,并且显示最新插入的记录。源文档如下:
客户端源文档为uploadtodb.htm(同上一部分的客户端文档)。
服务器端源文档(readfile.asp):
<%response.expires = 0
response.buffer=true%>
<%response.clear
response.contenttype = "application/msword"
set conn=server.createobject("adodb.connection")
conn.open "dsn=fileupload;uid=sa;"
set rs1=conn.execute("select maxid=max(id) from uploadfile")
sql="select * from uploadfile where id="&rs1("maxid")
set rs=conn.execute(sql)
response.binarywrite rs("content")
rs.close
rs1.close
conn.close
response.end
%>
其中,web server向客户端发送content-type="application/msword",使客户端认为这是word文档,然后服务器从数据库中读取文档内容(为简单起见,假定是数据库中最后一条记录),然后以二进制流的方式向客户端发送(调用asp内置对象response的binarywrite方法)。当客户端接收到这些内容后便自动启动word ole服务,使word控件嵌在浏览器ie中将收到的内容格式化显示。

总结
综上,通过使用asp脚本和文档上载组件及ado组件,能够方便地实现web数据库资料系统的关键技术。有了上述技术,对于基于web的数据库资料的简单系统便能够很容易地得到扩充和实现。笔者以上述技术为核心研发了一套internet上的数据库档案资料管理系统,系统很稳定可靠(很大一部分要归功于aspupload组件的稳定性),档案内容包含html、word、excel、文本、图像等各种格式,档案资料的管理、维护和检索十分方便,受到用户的一致好评。

喜欢本文,那就收藏到:

    Del.icio.us Google书签 Digg Live Bookmark Technorati Furl Yahoo书签 Facebook 百度搜藏 新浪ViVi 365Key网摘 天极网摘 和讯网摘 博拉网 POCO网摘 添加到饭否 QQ书签 Digbuzz我挖网
相关评论  我也要评论
还没有关于此文章的相关评论!
  • 昵称: (为空则显示guest)
  • 评论分数: ★ ★ ★★★ ★★★★ ★★★★★
  • 评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
  • 导航
    赞助商
    文章类别
    订阅