c# – 在SQL Server列中存储Microsoft Word 97文档
发布时间:2020-12-15 07:59:29 所属栏目:百科 来源:网络整理
导读:我有一个具有以下表格的数据库,但我没有办法解密它 DATA,TYPE,FILE TYPE,SIZE,DOC TYPE0x15234324,Word.Document.8,DOC,19968,WORD.DOCUMENT.8 该字段似乎包含存储在SQL Server IMAGE列中的word文档 有没有人遇到这个或以可读格式提取这些数据? 到目前为止,
我有一个具有以下表格的数据库,但我没有办法解密它
DATA,TYPE,FILE TYPE,SIZE,DOC TYPE 0x15234324,Word.Document.8,DOC,19968,WORD.DOCUMENT.8 该字段似乎包含存储在SQL Server IMAGE列中的word文档 有没有人遇到这个或以可读格式提取这些数据? 到目前为止,我已经尝试使用PHP来提取文件并将其写入word文档,但没有太多运气. 更新:我现在有Visual Studio Express,想要一种提取这些数据并保存到word文档的方法 UPDATE2:这是我在VB sofar中所拥有的 Imports System.Data.SqlClient Imports System.IO Public Class Form1 Private Shared Function RetrieveFile(ByVal filename As String) As Byte() Dim connection As New SqlConnection("Server=sqlsrv;database=database;Trusted_Connection=Yes;") Dim command As New SqlCommand("select data from objects where object_ref in (select data from parts where object_ref =239804)",connection) command.Parameters.AddWithValue("test",filename) connection.Open() Dim reader As SqlDataReader = command.ExecuteReader(System.Data.CommandBehavior.SequentialAccess) reader.Read() Dim memory As New MemoryStream() Dim startIndex As Long = 0 Const ChunkSize As Integer = 256 While True Dim buffer As Byte() = New Byte(ChunkSize - 1) {} Dim retrievedBytes As Long = reader.GetBytes(1,startIndex,buffer,ChunkSize) memory.Write(buffer,CInt(retrievedBytes)) startIndex += retrievedBytes If retrievedBytes <> ChunkSize Then Exit While End If End While connection.Close() Dim data As Byte() = memory.ToArray() memory.Dispose() Return data End Function Private Sub Button2_Click(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles Button2.Click Dim saveFileDialog1 As New SaveFileDialog() saveFileDialog1.Filter = "Doc File|*.doc" saveFileDialog1.Title = "Save an doc File" saveFileDialog1.ShowDialog() If saveFileDialog1.FileName <> "" Then Dim fs As New System.IO.FileStream(saveFileDialog1.FileName,System.IO.FileMode.Create,System.IO.FileAccess.Write) Dim data As Byte() = RetrieveFile("test.doc") fs.Write(data,data.Length) fs.Flush() fs.Close() End If End Sub End Class 解决方法
我写了一个VBS脚本,暂时从sharepoint blob中提取数据,这是它的通用版本:
Const adOpenKeyset = 1 Const adLockOptimistic = 3 Const adTypeBinary = 1 Const adSaveCreateOverWrite = 2 strSQLServer = "YOURSERVER" strSQLDatabase = "YOURDB" strRecordID = "123" strTempFileName = "c:output.doc" Set objConn = CreateObject("ADODB.Connection") Set objRS = CreateObject("ADODB.RecordSet") Set objStream = CreateObject("ADODB.Stream") objConn.Open "Provider=SQLOLEDB;data Source=" & strSQLServer & ";Initial Catalog=" & strSQLDatabase & "; Trusted_Connection=yes;" objRS.Open "Select * from AllDocStreams WHERE ID='" & strRecordID & "'",objConn,adOpenKeyset,adLockOptimistic objStream.Type = adTypeBinary objStream.Open objStream.Write objRS.Fields("Content").Value objStream.SaveToFile strTempFileName,adSaveCreateOverWrite objRS.Close objConn.Close (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |