Adodb.Stream说明及用法实例

Adodb.Stream是ADO的Stream对象,提供存取二进制数据或者文本流,从而实现对流的读、写和管理等操作。下面先说明一下Adodb.Stream的使用方法,再以几个典型经典实例说明一下Adodb.Stream的用法。

Adodb.Stream对象有下列使用方法:

Cancel 方法

     使用方法如下

     Object.Cancel

     说明:取消执行挂起的异步 Execute 或 Open 方法的调用。

Close  方法

     使用方法如下

     Object.Close

     :关闭对像

CopyTo 方法

     使用方法如下

     Object.CopyTo(destStream,[CharNumber])

     说明:将对像的数据复制,destStream指向要复制的对像,CharNumber为可选参数,指要复制的字节数,不选为全部复制。

Flush  方法

     使用方法如下

     Object.Flush

     说明:

LoadFromFile 方法

     使用方法如下

     Object.LoadFromFile(FileName)

     说明:将FileName指定的文件装入对像中,参数FileName为指定的用户名。

Open  方法 

      使用方法如下

      Object.Open(Source,[Mode],[Options],[UserName],[Password])

      说明:打开对像,

      参数说明:Sourece 对像源,可不指定

  Mode 指定打开模式,可不指定,可选参数如下:

    adModeRead  =1

    adModeReadWrite =3

    adModeRecursive =4194304

    adModeShareDenyNone =16

    adModeShareDenyRead =4

    adModeShareDenyWrite =8

    adModeShareExclusive =12

    adModeUnknown  =0

    adModeWrite  =2

  Options 指定打开的选项,可不指定,可选参数如下:

    adOpenStreamAsync =1

    adOpenStreamFromRecord =4

    adOpenStreamUnspecified=-1

  UserName 指定用户名,可不指定。

  Password 指定用户名的密码

Read  方法

 使用方法如下:

 Object.Read(Numbytes)

 说明:读取指定长度的二进制内容。

 参数说明:Numbytes指定的要读取的找度,不指定则读取全部。

ReadText  方法 

 使用方法如下:

 Object.ReadText(NumChars)

 说明:读取指定长度的文本

 参数说明:NumChars指定的要读取的找度,不指定则读取全部。

SaveToFile  方法 

 使用方法如下:

 Object.SaveToFile(FileName,[Options])

 说明:将对像的内容写到FileName指定的文件中

 参数说明:FileName指定的文件

    Options 存取的选项,可不指定,可选参数如下:

      adSaveCreateNotExist  =1

      adSaveCreateOverWrite =2

SetEOS  方法

 使用方法如下:

 Object.setEOS()

 说明:

SkipLine  方法

 使用方法如下:

 Object.SkipLine()

 说明:

Write  方法

 使用方法如下:

 Object.Write(Buffer)

 说明:将指定的数据装入对像中。

 参数说明:Buffer 为指定的要写入的内容。

WriteText  方法

 使用方法如下:

 Object.Write(Data,[Options])

 说明:将指定的文本数据装入对像中。

 参数说明:Data 为指定的要写入的内容。

           Options 写入的选项,可不指定,可选参数如下:

    adWriteChar  =0

    adWriteLine  =1

 有下列属性:

 Charset 

 EOS 返回对像内数据是否为空。

 LineSeparator 指定换行格式,可选参数有

  adCR   =13

  adCRLF   =-1

  adLF   =10

 

 Mode 指定或返加模式。

 

 Position 指定或返加对像内数据的当前指针。

 

 Size 返回对像内数据的大小。

 

 State 返加对像状态是否打开。

 

 Type 指定或返回的数据类型,可选参数为:

  adTypeBinary  =1

  adTypeText  =2

下面举例说明几个Adodb.Stream的用法:

 利用ADODB.Stream使用浏览器下载服务器文件..


程序代码: [ 复制代码到剪贴板 ]
内容: download.asp?file=相对路径的文件

就可以把这个文件下载下来

<%

 call downloadFile(replace(replace(Request("file"),"\",""),"/",""))

 Function downloadFile(strFile)

‘ make sure you are on the latest MDAC version for this to work

 ‘ ————————————————————-

‘ get full path of specified file

 strFilename = server.MapPath(strFile)

 ‘ clear the buffer

 Response.Buffer = True

 Response.Clear

‘create stream

 Set s = Server.CreateObject("ADODB.Stream")

 s.Open

‘Set as binary

 s.Type = 1

‘load in the file

 on error resume&nbs
p;next

‘ check the file exists

 Set fso = Server.CreateObject("Scripting.FileSystemObject")

 if not fso.FileExists(strFilename) then

 Response.Write("<h1>Error:</h1>" & strFilename & " does not exist<p>")

 Response.End

 end if

‘ get length of file

 Set f = fso.GetFile(strFilename)

 intFilelength = f.size

 s.LoadFromFile(strFilename)

 if err then

 Response.Write("<h1>Error: </h1>" & err.Description & "<p>")

 Response.End

 end if

‘ send the headers to the users browser

 Response.AddHeader "Content-Disposition", "attachment; filename=" & f.name

 Response.AddHeader "Content-Length", intFilelength

 Response.CharSet = "UTF-8"

 Response.ContentType = "application/octet-stream"

‘ output the file to the browser

 Response.BinaryWrite s.Read

 Response.Flush

 ‘ tidy up

 s.Close

 Set s = Nothing

 End Function

%> 

 

ASP中利用ADODB.Stream对象将字节流转换为字符流

程序代码: [ 复制代码到剪贴板 ]
内容: ASP中利用ADODB.Stream对象将字节流转换为字符流 

‘——————————————————————–

‘ 二进制转字符串

‘ 入口参数:字节流

‘ 函数返回:字符串

‘ Code By:Madpolice 2002-12-20

‘ 利用 ADODB.Stream 对象,速度比原来的字符替换法快了n倍,n≈30!!)

‘——————————————————————–

‘下面的常量是函数用到的,因为我在函数外面已经定义过了,因此不在这里重复定义

‘—- StreamTypeEnum Values —-

‘Const adTypeBinary = 1

‘Const adTypeText = 2

Function Bytes2bStr(vin)

 Dim BytesStream,StringReturn

 Set BytesStream = Server.CreateObject("ADODB.Stream") ‘建立一个流对象

 With BytesStream

  .Type = adTypeText        ‘设置流对象的类型为字符流

  .Open                     ‘打开流对象

  .WriteText vin            ‘把vin写入流对象中

  .Position = 0             ‘设置流对象的起始位置是0,也就是开头

                            ‘这个操作必须做,为什么我也不知道,失败了n次得出的结论

          ‘如果不进行这个操作,下面设置Charset属性就出错

  .Charset = "GB2312"       ‘设置流对象的编码方式为GB2312

  .Position = 2             ‘设置流对象的起始位置是2(过滤掉开始的一个控制字符

          ‘这个控制字符是WriteText方法按默认属性Charset="Unicode"

          ‘读入数据的时候自动加到数据开头的,字符的值是FF3F

                            ‘这个控制字符占2字节,所以Position设置为2

          ‘表示略过2个字节,下面的ReadText方法从Position开始读数据

  StringReturn = .ReadText  ‘把流对象的内容保存在StringReturn变量中

  .close                    ‘关闭流对象

 End With

 Set BytesStream = Nothing     ‘销毁流对象

 Bytes2bStr = StringReturn

End Function

‘——————————————————————–

  

 

 

  Alonglee发布  访问人次51 ..:: [发表看法]  

  标题: 用Adodb.Stream将数据库中二进制文件保存到..

内容: 用Adodb.Stream将以二进制方式保存在数据库中的文件保存到硬盘

对于上传的数据库中的文件有的时候需要保存成硬盘上的文件,下面的代码以ACCESS数据库为例,演示怎样通过Adodb.Stream将文件保存到硬盘 

表:Demo的结构 

======================================= 

id: 自动编号 

filename:文本 

data: OLE 对象 

代码 

======================================= 

<% 

Dim Conn,ConnStr,Rs,Sql,MyStream 

ConnStr="DBQ=" + Server.Mappath("Demo.mdb") + ";DRIVER={Microsoft Access Driver (*.mdb)};" 

Set Conn = Server.CreateObject("Adodb.Connection") 

Conn.Open ConnStr 

Sql = "select * from demo where id=1" 

Set Rs = Server.CreateObject("Adodb.RecordSet") 

Rs.Open Sql,Conn,1,3 

Set MyStream=Server.CreateObject("Adodb.Stream") 

MyStream.Type = 1 

MyStream.Open 

MyStream.Write Rs("data").GetChunk(rs("data").ActualSize-78) 

MyStream.SaveToFile "c:\" & Rs("fileName")
 

Rs.Close 

Set Rs = Nothing 

Conn.Close 

Set Conn = Nothing 

%> 

 

用Adodb.Stream将以二进制方式保存在数据库中的文件保存到硬盘

程序代码: [ 复制代码到剪贴板 ]
内容: 用Adodb.Stream将以二进制方式保存在数据库中的文件保存到硬盘

对于上传的数据库中的文件有的时候需要保存成硬盘上的文件,下面的代码以ACCESS数据库为例,演示怎样通过Adodb.Stream将文件保存到硬盘 

表:Demo的结构 

======================================= 

id: 自动编号 

filename:文本 

data: OLE 对象 

代码 

======================================= 

<% 

Dim Conn,ConnStr,Rs,Sql,MyStream 

ConnStr="DBQ=" + Server.Mappath("Demo.mdb") + ";DRIVER={Microsoft Access Driver (*.mdb)};" 

Set Conn = Server.CreateObject("Adodb.Connection") 

Conn.Open ConnStr 

Sql = "select * from demo where id=1" 

Set Rs = Server.CreateObject("Adodb.RecordSet") 

Rs.Open Sql,Conn,1,3 

Set MyStream=Server.CreateObject("Adodb.Stream") 

MyStream.Type = 1 

MyStream.Open 

MyStream.Write Rs("data").GetChunk(rs("data").ActualSize-78) 

MyStream.SaveToFile "c:\" & Rs("fileName") 

Rs.Close 

Set Rs = Nothing 

Conn.Close 

Set Conn = Nothing 

%> 

 

 

未经允许不得转载:聚友 » Adodb.Stream说明及用法实例

赞 (0) 打赏

评论 2

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. dxworld請問將硬盤中的圖片文件通過adodb.stream讀入到數據庫某表的image字段中如何做? 回复
  2. 青岛贷款网Position 指定或返加对像内数据的当前指针。老是在这里报错 回复

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏