随着Internet应用在全球的迅速普及,网络教育日趋广泛,越来越多的教育机构和企业采用Internet/Intranet/Extranet 技术组建自己的教育信息组织与管理平台, 基于WWW和TCP/IP 的B/S模式正逐步取代传统的C/S模式成为信息集成的主流。 在网络资源管理系统开发中经常要提供从客户端对远程服务器端数据库的数据导入与导出功能,本文就这种机制的实现进行探讨。
1 系统总体框架
目前较好的B/S 解决方案是采用ASP+ADO 的方法, 利用三层结构构造WEB应用程序。ASP(Active Server Page)是Microsoft 公司开发的服务器端脚本编写环境,ASP页是包括HTML标记、文本和脚本命令(用VBScript,JScript脚本语言)的文件。同时ASP可调用Java Applet 和ActiveX组件来开发动态的、交互的、高性能的WEB服务器应用程序。ADO提供了在ASP Web 页面内访问数据的功能。它提供了数据库连接、查询结果集等对象,利用ASP环境可以对这些对象进行编程,完成对各种ODBC数据源的操作。系统的体系结构如下:
WEB 浏 览 器
WEB 浏 览 器
WEB服务器(IIS)
Active Serve Page(ASP文件)
ActiveX脚本
VBscript
ADO组件
File Access
组件
数据库
激活组件(COM)
ODBC/OLE DB 连接
图1 ASP+ADO 总体框架
客户端浏览器通过表单访问WEB服务器上的ASP页面,服务器执行ASP文件可以激活ADO组件,利用ODBC/OLE DB 连接访问数据库服务器。文件系统的访问可以利用File Access 组件实现。
WEB应用软件的使用者,由于学习需要经常要在客户端进行远程数据库的导入或导出操作。为达到导出数据的目的,WEB应用程序中可以先把数据库转为文件再通过WWW机制下载文件来实现。同样数据导入可以先通过WWW机制把数据以文件形式上载到WEB服务器,再通过读文件把数据插入数据库来实现。文件的上载和下载可以通过调用第三方组件来实现,我们这里使用一种常用且功能完备的组件ASPSmartUpload。
2技术细节
2.1通过ADO ODBC DSN---less连接数据库,这种方式不需要建立ODBC 系统DSN
以连接SQL数据库为列:
Set adocon=Server.CreateObject(“ADODB.Connection”)
Adocon.Open”Drive={SQL Server};Server=(Local);UID=xxx;PWD=yyy;database=zzz;”
其中的UID是登录SQL SERVER的“帐号名称”(本列是xxx),PWD则是“密码”(yyy),database属性是欲连接的“数据库名称”(zzz)
2.2利用ADO Connection 与Recordset 对象进行数据库查询
strSQL=“Select * From tablename Where condition”
建立SQL查询语句
Set RS=adocon.Execute(strSQL)
利用Connection 对象的Execute方法执行SQL查询语句,返回Recordset对象
2.3 File Access 组件的FileSystemObject与TextStream对象的文件处理功能
Set objFS=Server.CreateObject(“Scripting.FileSystemObject”)
建立FileSystemObject对象实例objFS
Set objReadTS=objFS.OpenTextFile(filename[,iomode[,create[,format]]])
调用FileSystemObject 对象的OpenTextFile方法打开文件以备读,同时返回TextStream对象objReadTS。
Set objWriteTS=objFS.CreateTextFile(filename[,overwrite[,Unicode]])
调用FileSystemObject 对象的CreateTextFile方法建立文件以备写,同时返回TextStream对象objWriteTS。
2.4用ASPSmartUpload组件上载和下载文件
dirUpload = "/gdzcgl/ruanjiangl/backup"
指定文件上载后的存储路径
Set objUpload=Server.CreateObject("AspSmartUpLoad.SmartUpLoad")
objUpload.UpLoad
建立SmartUpload对象,调用其上载方法
intNo = objUpload.Save(dirUpload)
将上载后的文件存储到dirUpload 指定的路径
3具体实现
3.1数据导入
下面是客户端界面网页的设计,采用HTML语言和VBScript脚本实现用HTML的FORM标记中嵌入多个file型INPUT标记来实现一次可上载多个文件,VBScript脚本部分用于检查用户是否指定欲上载的文件
<HTML>
<head>
<title>导入</title>
</head>
<BODY>
<FORM METHOD="POST" Name="upload" ACTION="imdata.asp" ENCTYPE="multipart/form-data">
<p>
系统数据<INPUT TYPE=FILE SIZE=50 NAME="file1">
<p>
单位数据<INPUT TYPE=FILE SIZE=50 NAME="file2"></p>
<p>
软件数据<INPUT TYPE=FILE SIZE=50 NAME="file3"></p>
<p align="center"><input type="reset" value="全部重写" name="B2">
<input type="submit" value="提交" name="B1">
</FORM>
</BODY>
</HTML>
上面的HTML文件通过表单把将要上载的文件交给imdata.asp文件处理,首先通过ASPSmartUpload
组件将文件上载到WEB服务器的指定路径下,然后在客户端回显成功上载的文件信息,接着连接需要的数据库,通过读文件把数据逐条插入数据库。下面是具体代码:
<HTML>
<head><title>dataimport</title>
</head>
<BODY>
<%
Dim linenum
Dim strofline
Dim objUpload, intNo, File
dirUpload = "/gdzcgl/ruanjiangl/backup" ‘指定服务器端保存上载文件的路径
Set objUpload=Server.CreateObject("AspSmartUpLoad.SmartUpLoad")
objUpload.UpLoad ‘上载文件
intNo = objUpload.Save(dirUpload) ‘保存文件
FullPath=Server.MapPath("/gdzcgl/ruanjiangl/backup/dwbak.txt")
Set objFS=Server.CreateObject("Scripting.FileSystemObject")
Set objReadTS=objFS.OpenTextFile(FullPath,1,-1,0) ‘打开上载的文件,以读取数据
objReadTS.ReadLine
linenum=4
‘建立数据库连接
Set Conn=Server.CreateObject("ADODB.Connection")
Conn.Open"Driver={SQL Server};Server=(Local);UID=sa;PWD=system;DATABASE=pubs;"
‘用SQL 语句清空原有的表数据
SQL1="DELETE rdw"
Set RS1=Conn.Execute(SQL1)
‘读文件且把数据插入数据库表中
Do While Not objReadTS.AtEndOfStream
strofline=objReadTS.ReadLine
strofline=CStr(strofline)
aryn=Split(strofline," ")
SQL2="insert into rdw values("
For i=0 to linenum-2
SQL2=SQL2 & "'" & aryn(i) & "'" & ","
Next
SQL2=SQL2 & "'" & aryn(linenum-1) & "'" & ")"
‘执行 SQL语句
Conn.Execute(SQL2)
Loop
%>
</BODY>
</HTML>
特别声明:本站注明稿件来源为其他媒体的文/图等稿件均为转载稿,本站转载出于非商业性的教育和科研之目的,并不意味着赞同其观点或证实其内容的真实性。如转载稿涉及版权等问题,请作者在两周内速来电或来函联系。