使用 ADO Stream 对象访问和修改 SQL Server BLOB 数据 http://support.microsoft.com/default.aspx?scid=kb;zh-cn;258038
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, adLockOptimisticSet mstream = New ADODB.Stream mstream.Type = adTypeBinary mstream.Open mstream.Write rs.Fields("logo").Value mstream.SaveToFile "c:\publogo.gif", adSaveCreateOverWriters.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, adLockOptimisticSet mstream = New ADODB.Stream mstream.Type = adTypeBinary mstream.Open mstream.LoadFromFile "<path to .gif file>" rs.Fields("logo").Value = mstream.Read rs.Updaters.Close cn.Close
http://support.microsoft.com/default.aspx?scid=kb;zh-cn;258038
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, adLockOptimisticSet mstream = New ADODB.Stream
mstream.Type = adTypeBinary
mstream.Open
mstream.Write rs.Fields("logo").Value
mstream.SaveToFile "c:\publogo.gif", adSaveCreateOverWriters.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, adLockOptimisticSet mstream = New ADODB.Stream
mstream.Type = adTypeBinary
mstream.Open
mstream.LoadFromFile "<path to .gif file>"
rs.Fields("logo").Value = mstream.Read
rs.Updaters.Close
cn.Close
6. 保存并运行 Visual Basic 项目。