如何使用 ADO Stream 对象访问和修改 SQL Server BLOB 数据
来源:互联网 发布:高校大数据平台 编辑:程序博客网 时间:2024/05/19 16:37
概要
使用 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。
本例中的代码将声明一个 ADODB Stream 对象,并将其 Type 属性设置为 adTypeBinary 以表明该对象将用于处理二进制数据。然后,通过调用 Stream 对象的 Write 方法将 pub_info 表的第一条记录的徽标列中存储的二进制数据写到该对象中。接下来,通过调用 Stream 对象 SaveToFile 方法并传入文件路径,将该对象包含的二进制数据保存到文件中。作为第二个参数传入的 adSaveCreateOverWrite 常量会导致 SaveToFile 方法覆盖指定的文件(如果该文件存在)。
示例 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.ConnectionDim rs As ADODB.RecordsetDim mstream As ADODB.Stream
5. 将以下代码剪切并粘贴到您添加到窗体中的 CommandButton 控件的 Click 事件中: Set cn = New ADODB.Connectioncn.Open "Provider=SQLOLEDB;data Source=<name of your SQL Server>;Initial Catalog=pubs;User Id=<Your Userid>;Password=<Your Password>"Set rs = New ADODB.Recordsetrs.Open "Select * from pub_info", cn, adOpenKeyset, adLockOptimisticSet mstream = New ADODB.Streammstream.Type = adTypeBinarymstream.Openmstream.Write rs.Fields("logo").Valuemstream.SaveToFile "c:/publogo.gif", adSaveCreateOverWriters.Closecn.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.ConnectionDim rs As ADODB.RecordsetDim mstream As ADODB.Stream
5. 将以下代码剪切并粘贴到您添加到窗体中的 CommandButton 控件的 Click 事件中: Set cn = New ADODB.Connectioncn.Open "Provider=SQLOLEDB;data Source=<name of your SQL Server>;Initial Catalog=pubs;User Id=<Your Userid>;Password=<Your Password>"Set rs = New ADODB.Recordsetrs.Open "Select * from pub_info", cn, adOpenKeyset, adLockOptimisticSet mstream = New ADODB.Streammstream.Type = adTypeBinarymstream.Openmstream.LoadFromFile "<path to .gif file>"rs.Fields("logo").Value = mstream.Readrs.Updaters.Closecn.Close
6. 保存并运行 Visual Basic 项目。 7. 单击 CommandButton 运行代码,将 .gif 文件的内容以数据流传输到 ADO Stream 对象,然后将 Stream 中的数据保存到记录集中第一条记录的徽标列中。 8. 使用示例 1 中的代码验证徽标列中的图像是否已被修改。 - 如何使用 ADO Stream 对象访问和修改 SQL Server BLOB 数据
- 如何使用 ADO Stream 对象访问和修改 SQL Server BLOB 数据
- 如何使用C#和ADO.NET在SQL Server数据库读取和写入blob数据
- 如何使用ADO对象连接SQL Server数据库
- [转]使用ADO GetChunk/AppendChunk 读写SQL Server BLOB字段
- VC使用ADO访问sql server数据库
- ADO访问SQL SERVER
- 如何实现ADO访问Blob类型
- 使用ADO.NET 和C# 处理BLOB 数据
- 使用ADO.NET 和C# 处理BLOB 数据
- VBA中用ADO访问SQL SERVER数据库:数据查询
- ADO访问Sql Server数据的方法简介
- ADO访问Sql Server数据的方法简介
- ado 访问ms sql server
- 使用ADO实现BLOB数据的存取
- 使用ADO实现BLOB数据的存取
- VC++中使用ADO访问SQL Server 2000简介
- 使用ADO.NET对SQL Server数据库进行访问
- 虚拟主机不支持silverlight
- 应用makecab.exe生成cab
- Facelets 非常适合 JSF
- 在C#中使用WMI
- MVC模式应用
- 如何使用 ADO Stream 对象访问和修改 SQL Server BLOB 数据
- 带图片的,多列的DropDownList(转自孟宪会之精彩世界)
- 从今天开始建立自己的博客
- 实训C++语言设计——二进、八进和十六进制 表输出
- 中国惠普前总裁孙振耀的毕生经验之谈
- 用二级指针求解二叉树根节点
- 实训C++语言设计——接受两个非递减的线性表,并将它们合并为非递减的Lc
- 孙振耀撰文谈退休并畅谈人生
- DOM 文档对象事件模型及示例