gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 20:25:31 25 4
gpt4 key购买 nike

我有这个数据库,其中有一个表,其中包含以下内容,但我无法解密它

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 中的内容

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, 0, ChunkSize)
memory.Write(buffer, 0, 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, 0, data.Length)
fs.Flush()
fs.Close()
End If
End Sub




End Class

最佳答案

不久前我写了一个 VBS 脚本来从共享点 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

关于c# - 在 SQL Server 列中存储 Microsoft Word 97 文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5910581/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com