明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

使用FSO把文本信息導(dǎo)入數(shù)據(jù)庫

[摘要]在開發(fā)WEB應(yīng)用程序中,我們經(jīng)常需要對文件系統(tǒng)中的驅(qū)動器、文件夾和文件進行處理,比如收集驅(qū)動器的相關(guān)信息;創(chuàng)建、添加、移動或刪除文件夾和文件等。在VB6中新提供了一套稱為FSO(File System Object)對象模型來對文件系統(tǒng)進行訪問處理。該模型提供了一個基于對象的工具,通過它所提供的一...

    在開發(fā)WEB應(yīng)用程序中,我們經(jīng)常需要對文件系統(tǒng)中的驅(qū)動器、文件夾和文件進行處理,比如收集驅(qū)動器的相關(guān)信息;創(chuàng)建、添加、移動或刪除文件夾和文件等。在VB6中新提供了一套稱為FSO(File System Object)對象模型來對文件系統(tǒng)進行訪問處理。該模型提供了一個基于對象的工具,通過它所提供的一系列屬性和方法,我們可以在應(yīng)用程序中更簡單、靈活地對文件系統(tǒng)進行各種操作。
  一、FSO簡介
  FSO對象模型包含以下幾種對象:
  Drive對象:允許收集系統(tǒng)物理或通過LAN與系統(tǒng)邏輯連接的硬盤、CD-ROM等驅(qū)動器的可用空間、共享名等信息。
  Folder對象:允許創(chuàng)建、刪除或移動文件夾,并向系統(tǒng)查詢文件夾的名稱、路徑等。
  Files對象:允許創(chuàng)建、刪除或移動文件,并向系統(tǒng)查詢文件的名稱、路徑等。
  TextStream對象:允許創(chuàng)建和讀寫文本文件。
  FileSystemObject對象:提供一整套用于驅(qū)動器、文件夾和文件操作的方法,在功能上可以把它看作是上面幾個對象的集合并且經(jīng)常與它們配合使用。與該對象相關(guān)聯(lián)的很多方法重復(fù)了前面四個對象中的方法,因此我們既可以通過FileSystemObject對象來對驅(qū)動器、文件夾和文件進行大多數(shù)操作,也可以通過對應(yīng)的驅(qū)動器、文件夾或文件對象對這些組件進行操作。FSO模型通過兩種方法實現(xiàn)對同一對象的操作,其操作效果是相同的,提供這種冗余功能的目的是為了實現(xiàn)最大的編程靈活性。

在這篇文章中,我們將講解利用FSO對象模型的TextStream對象對文本文件的操作。

(一) 用 FileSystemObject 來獲取文本文件對象
  1.創(chuàng)建一個 FileSystemObject 對象實例
要進行文件操作,首先必須創(chuàng)建一個 FileSystemObject 對象實例,用來創(chuàng)建或打開一個文件.創(chuàng)建一個 FileSystemObject 對象實例的具體格式為(以AFileSystemObject)為例:
Set AFileSystemObject = CreateObject("Scripting.FileSystemObjecct")
  2.用 FileSystemObject 來獲取文本文件對象TextStream
FileSystemObject 提供了兩種方法用于獲取文本文件對象 TextStream,其中用于創(chuàng)建
文件的是 CreateTextFile,用于打開已存在文件的是 OpenTextFile,兩種方法的返回結(jié)果都是
一個 TextStream 對象的實例,利用該對象可以進行文件的具體操作.
⑴ 創(chuàng)建一個新文件
  創(chuàng)建新文件的方法的具體格式為(以AFileSystemObject為例):
   AFilesystemObject.CreateTextFile(NewFileName,OverwriteExistingFile,IsUnicode)
其中:
  NewFileName 是一個string值,指定要建立的文件的名稱,通常為文件的實際路徑
加文件名稱,如C:\webshare\aspsamp\filetest.txt
  OverwriteExistingFile 是一個Boolean值,表示如果有同名文件存在時是否覆蓋
原來的文件.該參數(shù)可以省略,缺省時為False,即不覆蓋原來文件.
  IsUnicode 是一個Boolean值,表示要建立的文件是ASCII文件還是Unicode文件,
該參數(shù)可以省略,缺省時為False,即為ASCII文件.
⑵ 打開已存在的文件
  打開已存在文件的方法的具體格式為(以AFileSystemObject為例):
   AFilesystemObject.OpenTextFile(FileName,IOMode,create,format)
其中:
  FileName 是一個string值,指定要打開的文件的名稱,通常為文件的實際路徑
加文件名稱,C:\filepath\test.txt
  IOMode 是常數(shù)值,表示打開文件的目的,F(xiàn)orReading(1)表示用于讀取數(shù)據(jù);
ForAppending表示用于增加數(shù)據(jù).該參數(shù)可以省略,缺省時為ForReading.
  Create 是一個Boolean值,表示要打開的文件不存在時是否創(chuàng)建新文件,
該參數(shù)可以省略,缺省時為False,即不創(chuàng)建新文件.
  Format 表示文件打開的方式.其可能的值及含義如下:
TristateTrue : 以 Unicode 的方式打開.
TristateFalse : 以 ASCII 的方式打開.
TristateUseDefault : 以系統(tǒng)默認的方式打開.
該參數(shù)可以省略,缺省時為 TristateFalse ,即ASCII方式.
(二).用 TextStream 進行文件操作
  在建立或打開了文件之后,就可利用對象 TextStream 提供的方法進行文件的實際操作了.
 。保糜趯懖僮鞯姆椒ㄓ校
⑴ Write(string)
  將由string指定的字符串寫入到文件中.
⑵ WriteLine(string)
  在文件中寫入由string指定的字符串,并寫入一個換行字符.
  參數(shù)string可以省略,此時將在文件中插入一個空行.
⑶ WriteBlankLines(NumOfLines)
  在文件中插入若干空行,行數(shù)由 NumOfLines 指定.
 。玻糜谧x操作的方法和屬性方法有:
⑴ AtEndOfLine
  該屬性是一個Boolean值,表示文件指針是否已指向當前行的行尾.
⑵ AtEndOfStream
  該屬性是一個Boolean值,表示文件指針是否已指向文件尾.
⑶ Column
  該屬性是一個整數(shù)值,表示文件指針在當前行中的位置.
⑷ Line
  該屬性是一個整數(shù)值,表示文件指針所在行的行號.
⑸ Read(NumOfCharacters)
  該方法從文件當前位置開始,讀入由NumOfCharacters數(shù)目指定的若干字符,返回一個
  字符串.
⑹ ReadLine
  該方法從文件當前位置開始,讀入當前行的內(nèi)容直到行尾,返回一個字符串.
⑺ ReadAll
  該方法從當前位置開始,讀入整個文件的內(nèi)容直到文件結(jié)束,返回一個字符串.
⑻ Skip(NumOfCharacters)
  該方法從文件當前位置開始,跳過由NumOfCharacters數(shù)目指定的若干字符.
⑼ SKipLine
  該方法從文件當前位置開始,跳過當前行的內(nèi)容.
 。常糜陉P(guān)閉文件的方法有:
⑴ Close
  關(guān)閉已經(jīng)建立或打開的文件.

(三)、下面就以一個實例來說明如何使用FSO來讀取文本文件和如何保存到數(shù)據(jù)庫:

1、  先創(chuàng)建一個讀取文件路徑的頁面:file.htm

<FORM METHOD=POST ACTION="upFile.asp" >

        <div align="center"> <br>

        <br>

        <br>

        <br>

        <input type="file" name="path" size="40">

        <INPUT TYPE="submit" name="dr" value="導(dǎo)入信息">

        </div>

</FORM>

2、  編寫把獲取到的文本值保存到數(shù)據(jù)庫代碼:upFile.asp

<%@Language="VBScript"%>

<%Response.Buffer=true%>

<!--#include file="adovbs.inc"-->

<%

strConn="DSN=DataSourceName"

set Conn=Server.CreateObject("ADODB.Connection")

Conn.open strConn

set ObjComm=Server.CreateObject("ADODB.Command")

ObjComm.CommandText="sp_AddMsg"         ‘調(diào)用存儲過程

ObjComm.CommandType=adCmdStoredProc

Set ObjComm.ActiveConnection=Conn

''''''''''創(chuàng)建輸入輸出參數(shù)'''''''''''''''''

Set ObjParamECom=ObjComm.CreateParameter("WC_ECompanyName",adVarchar,adParamInput,100)

      ObjComm.Parameters.Append ObjParamECom

      '@in_ECompanyName      Varchar(50),                   --公司英文名稱

Set ObjParamAddr=ObjComm.CreateParameter("WC_Address",adVarchar,adParamInput,200)

      ObjComm.Parameters.Append ObjParamAddr

      '@in_Address      Varchar(50),                   --公司地址

Set ObjParamCity=ObjComm.CreateParameter("WC_City",adVarchar,adParamInput,100)

      ObjComm.Parameters.Append ObjParamCity

'@in_City     Varchar(50),                   --城市

''''''''''創(chuàng)建參數(shù)完畢''''''''''''''''''''

%>

<%

dim AllText,strLine1,strLine2,strLine3

dim strpath,fileurl

fileurl=""

strpath=Trim(Request.form("path"))

fileurl=strpath

SET FSO=CreateObject("Scripting.FileSystemObject")

SET ATextStream=FSO.OpenTextFile(fileurl,1,false,TristateFalse)

'''''''''提取數(shù)據(jù)''''''''''''''''''''''''''''

DO WHILE NOT ATextStream.AtEndOfStream

''''''初始化變量''''''''''''''''

strLine1=""

strLine2=""

strLine3=""

'''''''''''''''''''''''''''''''

   ATextStream.SkipLine

   ATextStream.Skip(11)         

   strLine1=Trim(ATextStream.ReadLine)

   ATextStream.Skip(11)

   strLine2=Trim(ATextStream.ReadLine)

   ATextStream.Skip(5)

   strLine3=Trim(ATextStream.ReadLine)

   …

'End if

''''''''''將變量加入?yún)?shù)集'''''''''''''

ObjParamECom.value=strLine1

ObjParamCCom.value=strLine2

ObjParamAddr.value=strLine3

''''''''''操作結(jié)束''''''''''''''''''''

ObjComm.Execute() '運行命令

LOOP

response.write "<br>"+"導(dǎo)入庫成功!<a href=dolist.html>[繼續(xù)導(dǎo)入]</a><br>"

set Conn=nothing

set FSO=nothing

set ATextStream=nothing

%>

附:存儲過程sp_AddMsg代碼

CREATE PROCEDURE dbo.sp_AddMsg                 --導(dǎo)入國外企業(yè)信息

(

   @in_CompanyName       Varchar(100),               --公司名稱

     @in_Address          Varchar(200),                 --公司地址

   @in_City           Varchar(100),              --公司所在城市

   …

)

AS

SET NOCOUNT ON

       BEGIN TRAN

            INSERT INTO Tb_WCLibrary( 

                             WC_CompanyName,

                             WC_CCompanyName,

                             WC_Address,

                             …

                                )

               VALUES(

                          @in_CompanyName,

                          @in_CCompanyName,

                          @in_Address,

                          …

                           )

IF @@ERROR <> 0

BEGIN

ROLLBACK TRAN

RETURN -1

END

COMMIT TRAN

RETURN 0

SET NOCOUNT OFF

至此,全文內(nèi)容講解結(jié)束,希望這篇文章能給讀者帶來一定的幫助。