中国教育和科研计算机网
EDU首页 |  中国教育 |   教育资源 |   科研发展 |   教育信息化 |   教育在线 |   CERNET  |   校园之窗

教育信息化

资讯 | 专题 会议 解读 专栏 访谈 项目 数据 招标 企业 产品 CIO 技术 校园信息化 教育装备 下一代互联网

中国教育网 > 教育信息化 搜索
您现在的位置: EDU首页 > 教育信息化 > 支撑平台 > 数据库
网络教育中远程数据库导入与导出机制
http://www.edu.cn   2008-06-01 作者:王凤蕊;王文宏

字体选择:【大】 【中】 【小】

      随着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>

页面功能 【打印】 【关闭】 【我有话说

教育信息化

版权所有:中国教育和科研计算机网网络中心 Copyright© 1994-2008 CERNIC,CERNET 京ICP备020072

关于假冒中国教育网的声明 | 有任何问题与建议请联络:Webmaster@staff.cernet.com