ASP中文本文件与数据库文件的数据交换(FSO)

  ASP中文本文件与数据库文件的数据交换

  网络数据库的应用是WWW上一个很重要的组成部分,可以这样说,如果缺少了数据库,网络也就失去了灵魂。大家可以想象一下,如果没有象YAHOO,SOHU等搜索引擎的话,那么在网上寻找一个目标变得多么困难,大家在茫茫网海里变得不知所往,动辄迷失方向。其实,这些搜索引擎是网络数据库的最典型的应用,在ASP(Active Server Pages)技术里对数据库的直接操作是比较多的,下面讲述一种由文本文件向数据库文件传递数据的方法。

  这个文本文体是由终端采集传送到服务器的一个固定目录下,由服务器去读取数据并存放在本机数据库里,转换完后删除掉这个文本文件。这样终端负责采集数据,并按给定的格式上传到服务器的指定目录下,服务器端的数据库对终端来讲是完全不透明的,保障了服务器的安全,对现在的网络数据库应用来讲或许有点帮助。

  Txttolib.asp

  <html>

  <head>

  <meta http-equiv="refresh" content="30;url=deltext.asp">

  <meta http-equiv="Content-Type"

  content="text/html; charset=gb_2312-80">

  <meta name="GENERATOR" content="Microsoft FrontPage Express 2.0">

  <title>[把文本文件转换成数据库文件]</title>

  </head>

  <body bgcolor="#FFFFFF">

  <align="center">

  <p align="center"><font color="#FF0000">正在处理数据,请稍候!

  <br>

  </font><font color="#000000"><align="center"><%

  str=server.mappath("/") ‘取得服务器的根目录

  Set fso = CreateObject("Scripting.FileSystemObject")

  Set f = fso.GetFolder(str & "\thetext")

  Set fc = f.Files

  k=1

  For Each f1 in fc

  file(k)=f1.name ‘得到此路径下的所有文件名

  k=k+1

  next

  %><% ii=1%><%

  set fs = CreateObject("Scripting.FileSystemObject")%><%

  while ii<k

  response.write file(ii) & "<br>"

  set textinstance=fs.opentextfile(str & "\thetext\" & file(ii),1,false,false)‘打开文件来读数据

  while textinstance.atendofstream<> true ‘如果文件没有结束

  visitornum=textinstance.readline ‘读进一行数据

  j=0

  cd=len(visitornum)

  for i=1 to cd

  if mid(visitornum,i,1)="," then ‘数据与数据之间以“,”隔开

  j=j+1

  else

  select case j‘分别取得各数据值

  case 0

  me1=me1+mid(visitornum,i,1)

  case 1

  me2=me2+mid(visitornum,i,1)

  case 2

  me3=me3+mid(visitornum,i,1)

  case 3

  me4=me4+mid(visitornum,i,1)

  case 4

  me5=me5+mid(visitornum,i,1)

  case 5

  me6=me6+mid(visitornum,i,1)

  end select

  end if

  next

  response.write me1 & " " & me2 & " " & me3 & " " & me4 & " " & me5 & " " & me6 & " " & "<br>"

  set cn=server.createobject("adodb.connection")

  cn.open "water","",""

  set rs=server.createobject("adodb.recordset")

  sql="select * from watertable"

  rs.open sql,cn,3,3‘打开数据库进行追加操作

  if rs.eof=true then

  on error resume next

  'rs.movelast

  rs.movefirst

  on error resume next

  end if

  rs.addnew‘增加一条记录

  rs("wvalue")=me1

  rs("wdate")=me2

  rs("wtime")=me3

  rs("zxz")=me4

  rs("jdh")=me5

  rs("czh")=me6

  rs.update‘更新数据

  rs.close

  me1=""

  me2=""

  me3=""

  me4=""

  me5=""

  me6=""

  wend

  ii=ii+1

  wend %><align="center"></font><font color="#FF0000">数据处理完毕!</font>

  </p>

  </body>

  </html>

  deltext.asp

  <html>

  <head>

  <meta http-equiv="refresh" content="30;url=txttolib.asp">

  <meta http-equiv="Content-Type"

  content="text/html; charset=gb_2312-80">

  <meta name="GENERATOR" content="Microsoft FrontPage Express 2.0">

  <title>[删除文件]</title>

  </head>

  <body bgcolor="#FFFFFF">

  <p align="center"><font color="#FF0000">正在删除文件,请稍候!<br>

  </font><font color="#000000"><%

  dim file(50)‘定义最大文件数

  str=server.mappath("/")

  Set fso = CreateObject("Scripting.FileSystemObject")

  Set f = fso.GetFolder(str & "\thetext\")

  Set fc = f.Files

  k=1

  For Each f1 in fc

  file(k)=f1.name

  response.write file(k) & "<br>"

  k=k+1

  next

  %><% i=1

  while i<k

  Set fso = CreateObject("Scripting.FileSystemObject")

  fso.DeleteFile(str & "\thetext\" & file(i))

  i=i+1

  wend

  %></font><font color="#FF0000">文件删除完毕!</font></p>

  </body>

  </html>

  这两个小程序在NT4上作者都调试通过。但有几点要认清,一个是文本文件大小的规划(文本文件的数量多少也是如此),如果数据量大,那么在转换时的时间大小要调整;二是转换文本文件到数据库文件时的程序调试一定要严谨,如果程序有误,在数据转换过程中没有全部转换,而后又删除了这个文本文件,则会有所损失。所以这两点一定要注意,不能马虎。