--要想下面的存储过程正常执行,必须先开启OLE对象的安全权限 sp_configure 'show advanced options',1; GO RECONFIGURE; GO sp_configure 'Ole Automation Procedures',1; GO RECONFIGURE; GO --存储过程:将二进制数据保存到指定的目录 --需要先将@FilePathAndName所在目录的安全权限,添加Windows账户“Network Service”的写入权限,才会成功 CREATE PROCEDURE [dbo].[up_SaveBinaryToFile](@Binary VARBINARY(MAX), @FilePathAndName VARCHAR(MAX)) AS BEGIN DECLARE @ObjectToken INT DECLARE @ErrorSource VARCHAR(255) DECLARE @ErrorDesc VARCHAR(255) DECLARE @ObjectReturn INT EXEC sp_OACreate 'ADODB.Stream', @ObjectToken OUTPUT EXEC sp_OASetProperty @ObjectToken, 'Type', 1 EXEC sp_OAMethod @ObjectToken, 'Open' EXEC @ObjectReturn = sp_OAMethod @ObjectToken, 'Write', NULL, @Binary IF (@ObjectReturn <> 0) BEGIN EXEC sp_OAGetErrorInfo @ObjectToken, @ErrorSource OUTPUT, @ErrorDesc OUTPUT RAISERROR('Write Error (return: ''%u'', source: ''%s'', description: ''%s'')', 15, 1, @ObjectReturn, @ErrorSource, @ErrorDesc) END EXEC sp_OAMethod @ObjectToken, 'SaveToFile', NULL, @FilePathAndName, 2 EXEC sp_OAMethod @ObjectToken, 'Close' EXEC sp_OADestroy @ObjectToken END GO --创建表[Temp_File]:如果在此表中插入新行时,isSave为1,则将文件保存到服务器指定的路径 SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Temp_File]( [id] [int] IDENTITY(1,1) NOT NULL, [uuid] [uniqueidentifier] NOT NULL, [title] [nvarchar](250) NULL, [name] [nvarchar](50) NULL, [ext] [nvarchar](50) NULL, [path] [nvarchar](max) NULL, [size] [int] NULL, [binData] [image] NULL, [comment] [nvarchar](max) NULL, [ownedBy] [nvarchar](50) NULL, [isSave] bit NULL --如果为1,则将数据作为物理文件存储至[path] CONSTRAINT [PK_Temp_File] PRIMARY KEY CLUSTERED ( [id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO ALTER TABLE [dbo].[Temp_File] ADD CONSTRAINT [DF_Temp_File_uuid] DEFAULT (newid()) FOR [uuid] GO --以下是通过触发器来调用:当在此表中新增一行时,则将文件保存到服务器指定的路径 CREATE TRIGGER tgr_exportTempFileTosvrDisk ON Temp_File INSTEAD OF INSERT AS DECLARE @uuid uniqueidentifier DECLARE @title NVARCHAR(250) DECLARE @name NVARCHAR(50) DECLARE @ext NVARCHAR(50) DECLARE @isSave BIT DECLARE @size INT DECLARE @fileData VARBINARY(MAX) DECLARE @comment NVARCHAR(MAX) DECLARE @ownedBy NVARCHAR(50) DECLARE @TempFolder NVARCHAR(256) DECLARE @SavedFile NVARCHAR(MAX) DECLARE @ObjectReturn INT DECLARE @Fso INT DECLARE @File INT select @uuid = [uuid] ,@title = [title] ,@name = [name] ,@ext = [ext] ,@isSave = [isSave] ,@size = [size] ,@fileData = [binData] ,@comment = [comment] ,@ownedBy = [ownedBy] from inserted; --文件写入 WINXP : C:\Documents and Settings\NetworkService\Local Settings\Temp -- WIN7/8/10/2008/2012: C:\Windows\ServiceProfile\NetworkService\AppData\Local\Temp\ IF @isSave = 1 BEGIN EXEC @ObjectReturn = sp_OACreate 'Scripting.FileSystemObject', @Fso OUTPUT; EXEC @ObjectReturn = sp_OAMethod @Fso, 'GetSpecialFolder', @File OUTPUT, 2; --系统临时文件夹 EXEC @ObjectReturn = sp_OAGetProperty @File, 'Path', @TempFolder OUTPUT; SET @SavedFile = @TempFolder + N'\' + CONVERT(NVARCHAR(256), @uuid) + '.' + @ext; EXEC up_SaveBinaryToFile @fileData , @SavedFile; END insert into Temp_File ([title],[name],[ext],[isSave],[size],[binData],[comment],[ownedBy]) values (@title,@name,@ext,@isSave,@size,@fileData,@comment,@ownedBy); update Temp_File set [path]=@SavedFile where [uuid]=@uuid GO ------------------------------------------------------------ --以下是直接使用SQL语句,手动调用上述存储过程保存文件 DECLARE @fileData VARBINARY(MAX) DECLARE @fileName NVARCHAR(255) DECLARE @extName NVARCHAR(255) DECLARE @filePath NVARCHAR(MAX) select top 1 @fileData = binData, @fileName = [name], @extName= [type] from dbo.system_picsLib SET @filePath = 'C:\temp\'+@fileName+'.'+@extName exec up_SaveBinaryToFile @fileData, @filePath
相关推荐
这种方法可以将BLOB数据直接存储在SQL Server数据库系统中,而不是作为文件存储在磁盘上。这可以提高数据的安全性和可维护性。 笔者还讨论了BLOB数据在SQL Server数据库系统中的存储方式不同于普通数据类型的存储...
在 SQL Server 中,Image 类型用于存储二进制大对象(BLOB),如图像、音频、视频等。Image 类型可以存储大量数据,但由于其存储方式和检索机制的限制,Image 类型数据的读写效率较低。 CLOB 字段在 Oracle 中的...
SQLSERVER数据库中存储BLOB类型数据,在线等现在公司要求用PB6.5+SQLser
该程序可将ORACLE中BLOB字段导入到SQL SERVER中的IMAGE字段,方便快捷。
Delphi将图片以二进制方式存储在数据库BLOB字段中,将使用TStream读写数据,利用BLOB字段进行图像数据的存取,Blob存变量,具体程序请参考useBlob目录中的代码。
ADO实现大型二进制数据在数据库中的存取(论文)
在sql server的字段中保存文件,文件大小没有限制。 字段类型2005以上是 varbinary(MAX),2000版本是image.
在调用存储过程时,我们可以使用ODBC、JDBC等方式来将二进制数据作为参数传递给存储过程。在这个文件中,我们使用了C API的方式来调用存储过程。具体来说,我们可以使用 MySQL 的C API来将二进制数据作为参数传递给...
* 文件存储:在云存储或分布式存储系统中,可以使用 BLOB 来存储大规模的二进制数据。 * 数据加密:在安全敏感的应用程序中,可以使用 BLOB 来存储加密后的数据。 C# 中的 BLOB 读取操作是指从数据库中读取二进制...
使用PL/SQL脚本将Oracle的Blob字段中存储的图片批量导出到文件夹,可在文件夹中直接查看。
FILESTREAM存储技术是SQL Server 2008的一项新功能,可以将BLOB数据存储为完整的文件,并且可以提高性能。 使用FILESTREAM存储技术可以解决关系数据库中存储文件和图片的问题,使得数据库的性能提高。 SQL Server ...
SQLServer 存储 BLOB文件资料合集,如何读写数据库中的BLOB文件
里面对于Sqlite3数据库2进制数据进行了详细的解析和对于大部分常用Sqlite3的接口函数做了一定的总结。对于2进制数据eg图片的操作有实例源代码提供。
其中 BLOBData 字段采用 image 数据类型,这是 SQL Server 中用于存储图片的一种数据类型。 程序思路 下面阐述一下程序的思路: 1. 点击 “浏览”按钮打开选择对话框,用户可以选择想要存储到数据库中的图片 2. ...
asp.net 将图片存储到数据库 读取数据库二进制文件
PowerBuilder 提供的 BLOB(Binary Large Object)数据类型可以用来处理大型数据,包括图像、大文本、Word 文档、二进制文件和多媒体等各种数据,它的长度可以是 0~2GB 字节。我们利用 BLOB 类型的变量可以将数据...
如何在GridView中显示SQL Server 2005数据库表BLOB数据.pdf
尝试用二进制大对象Blob解析,然后生成图片的URL,代码如下: // QRCode 为后端接口返回的图片数据流 const blob = new Blob([QRCode]) const url = window.URL.createObjectURL(blob) 但是把生成的URL链入img的src...
BLOB转为二进制字符 BLOB转为十六进制字符 2.生成BLOB Byte字节流转为BLOB Char字节流转为BLOB 二进制字符转为BLOB 十六进制字符转为BLOB 3.二进制 8位二进制转byte 二进制转十进制数 二进制转十六进制 4....
BLOB是一种二进制大对象,是数据库中的一种数据类型,用于存储大规模的二进制数据,如图片、音频、视频等。 上传图片 上传图片是指将图片文件从客户端上传到服务器端的过程。在上面的代码中,我们可以看到上传图片...