你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介│广告服务│读者反馈│编程社区  
合订本订阅
 
 
您的位置:技术专栏 / 数据库开发
如何使用 ADO Stream 对象访问和修改 SQL Server BLOB 数据
 

概要

使用 ActiveX 数据对象 (ADO) 2.5 中引入的 Stream 对象可以大大简化访问和修改 SQL Server 数据库中的二进制大对象 (BLOB) 数据需要编写的代码。在以前版本的 ADO(2.0、2.1 和 2.1 SP2)中使用 Field Object 的 GetChunk 和 AppendChunk 方法以固定块区大小从 BLOB 列中读取 BLOB 数据,或将 BLOB 数据写入其中时,必须要小心。现在 ADO 2.5 中提供了一种替代方法。本文包含的代码示例演示如何使用 Stream 对象编写程序来执行以下常见任务:

•

将 SQL Server Image 列中存储的数据保存到硬盘上的文件中。

•

将 .gif 文件的内容移动到 SQL Server 表的 Image 列中。

更多信息

以下代码示例基于 SQL Server 7.0 pubs 示例数据库中 pub_info 表中存储的数据。您需要将 ADO 连接字符串修改为指向您自己的 SQL Server。

示例 1:将 SQL Server Image 列中的数据保存到硬盘上的文件中

本例中的代码将打开 pubs 数据库中 pub_info 表中的一个记录集,并将第一条记录的徽标列中存储的二进制图像数据保存到硬盘上的文件中,如下所示:

1.

打开一个新的标准 EXE Visual Basic 项目。

2.

在项目菜单上,单击以选择引用,然后设置对 Microsoft ActiveX 数据对象 2.5 对象库的引用。

3.

在 Form1 上放置一个 CommandButton 控件。

4.

在该窗体的 General 声明部分作出以下声明:

Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Dim mstream As ADODB.Stream

5.

将以下代码剪切并粘贴到您添加到窗体中的 CommandButton 控件的 Click 事件中:

Set cn = New ADODB.Connection cn.Open "Provider=SQLOLEDB;data Source=<name of your SQL Server>; Initial Catalog=pubs;User Id=<Your Userid>;Password=<Your Password>" Set rs = New ADODB.Recordset rs.Open "Select * from pub_info", cn, adOpenKeyset, adLockOptimistic Set mstream = New ADODB.Stream mstream.Type = adTypeBinary mstream.Open mstream.Write rs.Fields("logo").Value mstream.SaveToFile "c:\publogo.gif", adSaveCreateOverWrite rs.Close cn.Close

6.

保存并运行 Visual Basic 项目。

7.

单击 CommandButton 将第一条记录的徽标列中的二进制数据保存到 c:\publogo.gid 文件。在 Windows 资源管理器中查找并打开此文件以查看保存的图像。

本例中的代码将声明一个 ADODB Stream 对象,并将其 Type 属性设置为 adTypeBinary 以表明该对象将用于处理二进制数据。然后,通过调用 Stream 对象的 Write 方法将 pub_info 表的第一条记录的徽标列中存储的二进制数据写到该对象中。接下来,通过调用 Stream 对象 SaveToFile 方法并传入文件路径,将该对象包含的二进制数据保存到文件中。作为第二个参数传入的 adSaveCreateOverWrite 常量会导致 SaveToFile 方法覆盖指定的文件(如果该文件存在)。

示例 2:将 .gif 文件中存储的图像传输到 SQL Server 表的 Image 列

本例中的代码将 .gif 文件中存储的图像保存到 pub_info 表中第一条记录的徽标列,从而覆盖该列当前的内容,如下所示:

1.

打开一个新的标准 EXE Visual Basic 项目。

2.

在项目菜单上,单击以选择引用,然后设置对 Microsoft ActiveX 数据对象 2.5 对象库的引用。

3.

在 Form1 中放置一个 CommandButton 控件。

4.

在该窗体的 General 声明部分作出以下声明:

Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Dim mstream As ADODB.Stream

5.

将以下代码剪切并粘贴到您添加到窗体中的 CommandButton 控件的 Click 事件中:

Set cn = New ADODB.Connection cn.Open "Provider=SQLOLEDB;data Source=<name of your SQL Server>; Initial Catalog=pubs;User Id=<Your Userid>;Password=<Your Password>" Set rs = New ADODB.Recordset rs.Open "Select * from pub_info", cn, adOpenKeyset, adLockOptimistic Set mstream = New ADODB.Stream mstream.Type = adTypeBinary mstream.Open mstream.LoadFromFile "<path to .gif file>" rs.Fields("logo").Value = mstream.Read rs.Update rs.Close cn.Close

6.

保存并运行 Visual Basic 项目。

7.

单击 CommandButton 运行代码,将 .gif 文件的内容以数据流传输到 ADO Stream 对象,然后将 Stream 中的数据保存到记录集中第一条记录的徽标列中。

8.

使用示例 1 中的代码验证徽标列中的图像是否已被修改。

这篇文章中的信息适用于:

•

Microsoft ActiveX Data Objects 2.5

•

Microsoft Visual Basic 6.0 专业版

•

Microsoft Visual Basic 6.0 企业版

•

Microsoft OLE DB Provider for SQL Server 7.0

 

  推荐精品文章

·2024年12月目录 
·2024年11月目录 
·2024年10月目录 
·2024年9月目录 
·2024年8月目录 
·2024年7月目录 
·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089