![](/img/trans.png)
[英]How to get Image data from SQL Server, Write To File, Save File to Disk using C#
[英]Save data from SQL Image field to pdf, msg, xls, txt file using C#
我在DB中有一个表,其类型为Image。 类型为image的文件存储来自附件的数据(从aspx应用程序上载),数据可能是pdf,xls,msg,txt等。该表还具有一个字段,用于存储附件名称和扩展名类型。
我必须将该表中所有行的附件保存回我的文件系统中。
我已经尝试了以下操作,但是我没有执行以下操作的权限
DECLARE @ObjectToken INT
EXEC sp_OACreate 'ADODB.Stream', @ObjectToken OUTPUT
EXEC sp_OASetProperty @ObjectToken, 'Type', 1
EXEC sp_OAMethod @ObjectToken, 'Open'
EXEC sp_OAMethod @ObjectToken, 'Write', NULL, Content
EXEC sp_OAMethod @ObjectToken, 'SaveToFile', NULL, 'c:/file.msg', 2
EXEC sp_OAMethod @ObjectToken, 'Close'
EXEC sp_OADestroy @ObjectToken
谁能让我知道如何使用C#将所有附件保存到文件系统。 我正在考虑使用“保存”按钮构建Windows Form App。
如果只想使用快速而肮脏的方法将文件与ADO一起使用,请使用VBS:
Set BinaryStream = CreateObject("ADODB.Stream")
BinaryStream.Type = 1 ' = adTypeBinary
BinaryStream.Open
Dim UUIDARRAY()
Redim UUIDARRAY(1000)
strConnection = "Driver={SQL Server};Server=<servername>;Database=<databasename>;Uid=<username>;Pwd=<userpasswor>;"
Set cn = CreateObject("ADODB.Connection")
cn.ConnectionString = strConnection
cn.Open
If cn.State = 1 Then
Set objrs=cn.execute( "Select <data> FROM <table> where <something>" )
Dim error
While not (objrs is nothing)
set field = objrs.Fields(0)
chunk_data = field.GetChunk(65536)
BinaryStream.Write chunk_data
Set objrs = objrs.NextRecordSet
Wend
cn.close
BinaryStream.SaveToFile "binarydata.bin", 2 '= adSaveCreateOverWrite'
else
wscript.echo "Could not connect"
end if
只需使用此脚本并将所有<...>替换为相关信息即可。
在您的SQL服务器上执行此操作(需要sa权限)
sp_configure
‘show advanced options’, 1
GO
reconfigure
GO
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.