1
我在SQL Server 2005数据库类型为'image'的字段中包含文档,主要是pdf。当我查看数据库中的字段时,它看起来好像数据存储为十六进制字符串。我已经广泛搜索了一下,并提出了下面的VB.net函数来将字段转换为实际文件,但它只输出一个包含十六进制字符串的文件,而不是字段应该表示的文件。SQL Server从图像字段打开文件
这是字段的数据样本(我已经截断它出于隐私目的):
0x1F8B0800000000000400EDBD07601C499625262F6DCA7B7F4AF
而且我写的字段转换为文档的功能:
Private Sub SimpleButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SimpleButton1.Click
sql = New MySqlClient.MySqlConnection(connectionString)
Dim cmd As New MySqlClient.MySqlCommand("SELECT docdata FROM temp.temp_docs WHERE docid = " + TextEdit1.Text, sql)
sql.Open()
Dim dr As MySqlClient.MySqlDataReader = cmd.ExecuteReader()
dr.Read()
Dim b(dr.GetBytes(0, 0, Nothing, 0, Integer.MaxValue) - 1) As Byte
dr.GetBytes(0, 0, b, 0, b.Length)
dr.Close()
sql.Close()
Dim DestFilePath As String = "C:\... \Desktop\" & String.Format("{0:hhmmss}", DateTime.Now) & ".pdf"
Dim fs As New System.IO.FileStream(DestFilePath, IO.FileMode.Create, IO.FileAccess.Write)
fs.Write(b, 0, b.Length)
fs.Close()
End Sub
任何人都可以发现我要去哪里吗?是否有可能直接从SQL服务器中的查询打开文件?
您不应该使用SQL ADO.NET提供程序而不是MySQL提供程序吗? – 2012-04-25 17:42:50
我们正在使用DTS包将数据传输到我们正在读取数据的MySQL客户端。我们已经确认数据转换没有问题,所以上面的函数读取了MySQL中SQL Server中相同的数据。我可能应该提到这一点! – 2012-04-26 08:38:49