title: Storing Microsoft Word 97 documents in SQL Server column
body: <p>I have this database with a table which has the the following but I have no way to decypher it</p>
  
  <pre><code>DATA,        TYPE,            FILE TYPE, SIZE,  DOC TYPE
  0x15234324 , Word.Document.8 ,DOC,       19968, WORD.DOCUMENT.8
  </code></pre>
  
  <p>The field seems to contain a word document stored in a SQL Server <code>IMAGE</code> column</p>
  
  <p>Has anyone come across this before or a way to extract this data in a readable format?</p>
  
  <p>So far I have tried using PHP to extract the file and write it to a word document but not had much luck.</p>
  
  <p><strong>UPDATE:</strong> I now have Visual Studio Express and would like a way to extract this data and save to a word document </p>
  
  <p><strong>UPDATE2:</strong> This is what I have in VB sofar</p>
  
  <pre><code>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 &lt;&gt; 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 &lt;&gt; "" 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
  </code></pre>