1

我有一个 SQL Server 2008-R2 数据库,其中有一个存储不同类型文件(Word Docs、PDF、TIF 等)的表,我可以使用以下方法从数据库中成功检索这些文件:

private void GetFilesFromDatabase() { try { const string connStr = @"Data Source=localhost\SQLInstance;Initial Catalog=MyData;Integrated Security=True;"; //初始化SQL Server连接。SqlConnection CN = new SqlConnection(connStr);

            //Initialize SQL adapter.
            SqlDataAdapter ADAP = new SqlDataAdapter("Select ole_id, ole_object From OLE Where ole_id = 21601", CN);

            //Initialize Dataset.
            DataSet DS = new DataSet();

            //Fill dataset with FilesStore table.
            ADAP.Fill(DS, "FilesStore");

            //Get File data from dataset row.
            byte[] FileData = (byte[])DS.Tables["FilesStore"].Rows[0]["ole_object"];

            string FileName = @"C:\Temp\Text.doc";
            //Write file data to selected file.
            using (FileStream fs = new FileStream(FileName, FileMode.Create))
            {
                fs.Write(FileData, 0, FileData.Length);
                fs.Close();
            }

        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString());
        }
    }

根据该特定行中包含的其他信息,我正在检索的这个文件是一个 Word Doc 文件。当我在将文件检索到磁盘后尝试打开文件时,所有数据似乎都是乱码并且无法读取。现在我相信这些文件在保存到数据库之前已被压缩,但我不知道如何解压缩它们以便可以查看它们,关于如何实现这一点的任何想法?我的最终目标是将这些图像移动到另一个数据库中。

4

1 回答 1

1

您保存文​​件的代码看起来不错。假设您的原始数据是 .DOC 文件,并且在保存您的运气后得到了错误的文件。您可能想在二进制编辑器(即 Visual Studio 的编辑器)中查看文件的内容,以确认该文件不是明显不同的东西(文本/图像......)。

您需要询问文件如何存储在数据库中。无法远程回答这个问题,因为它可能被压缩、加密、分割成块,甚至被简单地破坏。

于 2012-09-11T16:15:59.080 回答