c# – 在SQL Server列中存储Microsoft Word 97文档

前端之家收集整理的这篇文章主要介绍了c# – 在SQL Server列中存储Microsoft Word 97文档前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个具有以下表格的数据库,但我没有办法解密它
  1. DATA,TYPE,FILE TYPE,SIZE,DOC TYPE
  2. 0x15234324,Word.Document.8,DOC,19968,WORD.DOCUMENT.8

该字段似乎包含存储在sql Server IMAGE列中的word文档

有没有人遇到这个或以可读格式提取这些数据?

到目前为止,我已经尝试使用PHP提取文件并将其写入word文档,但没有太多运气.

更新:我现在有Visual Studio Express,想要一种提取这些数据并保存到word文档的方法

UPDATE2:这是我在VB sofar中所拥有的

  1. Imports System.Data.sqlClient
  2. Imports System.IO
  3.  
  4.  
  5. Public Class Form1
  6.  
  7. Private Shared Function RetrieveFile(ByVal filename As String) As Byte()
  8. Dim connection As New sqlConnection("Server=sqlsrv;database=database;Trusted_Connection=Yes;")
  9. Dim command As New sqlCommand("select data from objects where object_ref in (select data from parts where object_ref =239804)",connection)
  10. command.Parameters.AddWithValue("test",filename)
  11. connection.Open()
  12. Dim reader As sqlDataReader = command.ExecuteReader(System.Data.CommandBehavior.SequentialAccess)
  13. reader.Read()
  14. Dim memory As New MemoryStream()
  15. Dim startIndex As Long = 0
  16. Const ChunkSize As Integer = 256
  17. While True
  18. Dim buffer As Byte() = New Byte(ChunkSize - 1) {}
  19. Dim retrievedBytes As Long = reader.GetBytes(1,startIndex,buffer,ChunkSize)
  20. memory.Write(buffer,CInt(retrievedBytes))
  21. startIndex += retrievedBytes
  22. If retrievedBytes <> ChunkSize Then
  23. Exit While
  24. End If
  25. End While
  26. connection.Close()
  27. Dim data As Byte() = memory.ToArray()
  28. memory.Dispose()
  29. Return data
  30.  
  31.  
  32. End Function
  33.  
  34.  
  35. Private Sub Button2_Click(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles Button2.Click
  36. Dim saveFileDialog1 As New SaveFileDialog()
  37. saveFileDialog1.Filter = "Doc File|*.doc"
  38. saveFileDialog1.Title = "Save an doc File"
  39. saveFileDialog1.ShowDialog()
  40.  
  41. If saveFileDialog1.FileName <> "" Then
  42. Dim fs As New System.IO.FileStream(saveFileDialog1.FileName,System.IO.FileMode.Create,System.IO.FileAccess.Write)
  43. Dim data As Byte() = RetrieveFile("test.doc")
  44. fs.Write(data,data.Length)
  45. fs.Flush()
  46. fs.Close()
  47. End If
  48. End Sub
  49.  
  50.  
  51.  
  52.  
  53. End Class

解决方法

我写了一个VBS脚本,暂时从sharepoint blob中提取数据,这是它的通用版本:
  1. Const adOpenKeyset = 1
  2. Const adLockOptimistic = 3
  3. Const adTypeBinary = 1
  4. Const adSaveCreateOverWrite = 2
  5.  
  6. strsqlServer = "YOURSERVER"
  7. strsqlDatabase = "YOURDB"
  8. strRecordID = "123"
  9. strTempFileName = "c:\output.doc"
  10.  
  11. Set objConn = CreateObject("ADODB.Connection")
  12. Set objRS = CreateObject("ADODB.RecordSet")
  13. Set objStream = CreateObject("ADODB.Stream")
  14.  
  15. objConn.Open "Provider=sqlOLEDB;data Source=" & strsqlServer & ";Initial Catalog=" & strsqlDatabase & "; Trusted_Connection=yes;"
  16. objRS.Open "Select * from AllDocStreams WHERE ID='" & strRecordID & "'",objConn,adOpenKeyset,adLockOptimistic
  17.  
  18. objStream.Type = adTypeBinary
  19. objStream.Open
  20. objStream.Write objRS.Fields("Content").Value
  21. objStream.SaveToFile strTempFileName,adSaveCreateOverWrite
  22.  
  23. objRS.Close
  24. objConn.Close

猜你在找的C#相关文章