|
怎样通过SQL语句将Image类型字段的内容取出
|
|
goldentime 发表于 2008-1-11 14:10:00 |
*--利用 textcopy.exe文件实现在数据库中存储/读取文件
需要textcopy.exe文件,该文件可以在sql 7.0安装光盘找到
--转贴自大力--*/
--建立存取处理的存储过程 if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[sp_textcopy]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[sp_textcopy] GO
Create PROCEDURE sp_textcopy @srvname varchar (30),--服务器名 @login varchar (30), --用户名 @password varchar (30), --密码 @dbname varchar (30), --数据库名 @tbname varchar (30), --表名 @colname varchar (30), --存储文件的字段名 @filename varchar (30), --要存取的文件名 @whereclause varchar (40), --条件 @direction char(1)--I 为存储到数据库,O 从数据库中读出成文件 AS DECLARE @exec_str varchar (255) Select @exec_str = 'textcopy /S ' + @srvname + ' /U ' + @login + ' /P ' + @password + ' /D ' + @dbname + ' /T ' + @tbname + ' /C ' + @colname + ' /W "' + @whereclause + '" /F"' + @filename + '" /' + @direction EXEC master..xp_cmdshell @exec_str go
--调用示例: --1.创建示例表和初始化数据 create table tb(id int,img image) insert tb select 1,0x union all select 2,0x go
--2.将文件保存到数据库中 declare @srv varchar(255),@db sysname,@tb sysname,@col sysname select @srv=@@servername--服务器名 ,@db=db_name()--数据库名 ,@tb='tb'--表名 ,@col='img'--列名 exec sp_textcopy @srv,'sa','sa的密码',@db,@tb,@col,'c:\test.jpg','where id=1','I'--保存到id=1的记录中,注意条件是:id=1 exec sp_textcopy @srv,'sa','sa的密码',@db,@tb,@col,'c:\test.doc','where id=2','I'--保存到id=2的记录中,注意条件是:id=2
--3.从数据库中读出保存为文件 exec sp_textcopy @srv,'sa','sa的密码',@db,@tb,@col,'c:\test.jpg','where id=1','O'--读出id=1的记录,注意条件是:id=1 exec sp_textcopy @srv,'sa','sa的密码',@db,@tb,@col,'c:\test.doc','where id=2','O'--读出id=2的记录,注意条件是:id=2
--删除测试环境 drop table tb if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[sp_textcopy]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[sp_textcopy]
************************************************************************* '** '** 使用 ADODB.Stream 保存/读取文件到数据库 '** 引用 Microsoft ActiveX Data Objects 2.5 Library 及以上版本 '** '** ----- 数据库连接字符串模板 --------------------------------------- '** ACCESS数据库 '** iConcStr = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False" & _ '** ";Data Source=数据库名" '** '** SQL数据库 '** iConcStr = "Provider=SQLOLEDB.1;Persist Security Info=True;" & _ '** "User ID=用户名;Password=密码;Initial Catalog=数据库名;Data Source=SQL服务器名" '** '************************************************************************* ' '保存文件到数据库中 Sub s_SaveFile() Dim iStm As ADODB.Stream Dim iRe As ADODB.Recordset Dim iConcStr As String '数据库连接字符串 iConcStr = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False" & _ ";Data Source=F:\My Documents\客户资料1.mdb" '读取文件到内容 Set iStm = New ADODB.Stream With iStm .Type = adTypeBinary '二进制模式 .Open .LoadFromFile "c:\test.word" End With '打开保存文件的表 Set iRe = New ADODB.Recordset With iRe .Open "表", iConc, adOpenKeyset, adLockOptimistic .AddNew '新增一条记录 .Fields("保存文件内容的字段") = iStm.Read .Update End With '完成后关闭对象 iRe.Close iStm.Close End Sub
'从数据库中读取数据,保存成文件 Sub s_ReadFile() Dim iStm As ADODB.Stream Dim iRe As ADODB.Recordset Dim iConc As String '数据库连接字符串 iConc = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False" & _ ";Data Source=F:\My Documents\客户资料1.mdb" '打开表 Set iRe = New ADODB.Recordset iRe.Open "表", iConc, adOpenKeyset, adLockReadOnly '保存到文件 Set iStm = New ADODB.Stream With iStm .Mode = adModeReadWrite .Type = adTypeBinary .Open .Write iRe("保存文件内容的字段") .SaveToFile "c:\test.word" End With '关闭对象 iRe.Close iStm.Close End Sub
| |
|
|
发表评论:
|
日 历
栏目分类
最新文章
最新回复
最新留言
用户登陆
博客搜索
博客信息
站内链接
|