1

さまざまな種類のファイル (Word Docs、PDF、TIF など) を格納するテーブルを持つ SQL Server 2008-R2 データベースがあり、次の方法を使用してデータベースからこれらのファイルを正常に取得できます。

private void GetFilesFromDatabase() { try { const string connStr = @"Data Source=localhost\SQLInstance;Initial Catalog=MyData;Integrated Security=True;"; //SQL Server 接続を初期化します。SqlConnection CN = 新しい 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 に答える