案例8利用存储过程存储图片、声音等信息.doc
案例8 利用存储过程存储图片、声音等信息
通常SQL Server中的图片、声音等信息都是通过其他工具才能存储到sql中,实际上我们利用SQL Server的存储过程也可以达到同样的效果,下面以image类型存储为例,大家只需要按下列步骤执行即可:
1)启动SQL Server Management Studio;
2)新建查询,在查询编辑窗口中输入如下代码:
use jxgl
go
--1、xp_cmdshell的启用
sp_configure 'show advanced options',1
reconfigure
go
sp_configure 'xp_cmdshell',1
reconfigure
go
--2、建立过程
CREATE PROCEDURE 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))
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
--3、建表和初始化数据
create table tx(编号 int,image列名image)
go
insert tx values(1,0x) -- 必须的,且不是null
insert tx values(2,0x) -- 必须的,且不是null
go
--4、读入信息
textcopy '你的服务器名','sa','你的密码','库名','表名','image列名','c:\图片.bmp','where 编号=1','I' --注意条件是编号=1
exec textcopy '你的服务器名','sa','你的密码','库名','表名','image列名','c:\bb.doc','where 编号=2','I' --注意条件是编号=2
go
--5、读出成文件
textcopy '你的服务器名','sa','你的密码','库名','表名','image列名','c:\图片.bmp','where 编号=1','O' --注意条件是编号=1
exec textcopy '你的服务器名','sa','你的密码','库名','表名','image列名','c:\bb.doc','where 编号=2','O' --注意条件是编号=2
go
3)单击工具栏中的“执行查询”或直接按下F5。
注意:如果在执行的过程中报textcopy不是可执行文件的话,用户必须就到C:\Program Files\Microsoft SQL Server\MSSQL\Binn目录下拷备textcopy.exe到C:\Program Files\Microsoft SQL Server\90\Tools\Binn即可。