Announcement

Collapse
No announcement yet.

PDF, Word oder Excel im Datenbankfeld ?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • PDF, Word oder Excel im Datenbankfeld ?

    Hallo zusammen,
    ich benutze den SQL-Server 2000.
    Gibt es eine Möglichkeit ein PDF-, Word- oder Exceldokument in eine Datenbank zu speichern?
    Falls ja, wie bekomme ich die Daten in und dann wieder aus der Datenbank?

    Bin für jede Info dankbar, auch dafür zu wissen das es nicht geht....

  • #2
    Zauberort ist BLOB. Definier dir ein Blob-Feld und du kannst jedliche Binärdaten dort speichern. Vermutlich jedoch nicht über den Enterprise-Manager sondern über richtige Programmierung.

    Comment


    • #3
      Blob
      Meinst du ein Feld mit dem Datentype Image ?

      Den Code dafür würde ich in VB.Net 2005 schreiben wollen. Hat jemand dafür nen Ansatz...?

      Comment


      • #4
        Hallo,

        Hat jemand dafür nen Ansatz...?
        Wo liegt das Problem? In VB.NET landen die Daten in einem Byte-Array, wenn der binäre Inhalt aus der IMAGE-Spalte einer Tabelle ausgelesen wird.

        Comment


        • #5
          Kein Problem mehr...

          So mache ich es:

          Datei binär in die Datenbank speichern:

          Code:
          Dim FI As New IO.FileInfo(FileName)
          
              Using Fs As IO.FileStream = New IO.FileStream(FileName, IO.FileMode.Open, IO.FileAccess.Read)
                FileSize = Fs.Length
          
                RawData = New Byte(CType(FileSize, Integer)) {}
                Fs.Read(RawData, 0, CType(FileSize, Integer))
                Fs.Close()
              End Using
          
              Dim conn As New Data.SqlClient.SqlConnection(PstrConnString)
              Dim cmd As New Data.SqlClient.SqlCommand
              Dim SQL As String
          
              Try
                conn.Open()
          
                SQL = "INSERT INTO Binaer(Name,Extension,FileSize,MyFile) VALUES (@Name,@Extension,@FileSize,@MyFile)"
          
                With cmd
                  .Connection = conn
                  .CommandText = SQL
                  With .Parameters
                    .AddWithValue("@Name", FI.Name)
                    .AddWithValue("@Extension", FI.Extension.Trim)
                    .AddWithValue("@FileSize", FileSize)
                    .AddWithValue("@MyFile", RawData)
                  End With
                  .ExecuteNonQuery()
                End With
                conn.Close()
          
              Catch ex As Exception
                MsgBox(ex.Message)
                Return
              End Try
          Binäre Daten aus der Datenbank lesen:


          Code:
           Dim conn As New Data.SqlClient.SqlConnection(PstrConnString)
              Dim cmd As New Data.SqlClient.SqlCommand
              Dim myData As Data.SqlClient.SqlDataReader
              Dim SQL As String
              Dim RawData() As Byte
              Dim FileSize As Long
          
              SQL = "SELECT TOP 1 Name, Extension, FileSize, MyFile FROM Binaer ORDER By IDBin DESC"
          
              Try
                conn.Open()
          
                cmd.Connection = conn
                cmd.CommandText = SQL
          
                myData = cmd.ExecuteReader
          
                If Not myData.HasRows Then Throw New Exception("Es sind keine BLOBs zum speichern vorhanden")
          
                myData.Read()
          
                FileSize = myData.GetInt32(myData.GetOrdinal("FileSize"))
                RawData = New Byte(CType(FileSize, Integer)) {}
          
                myData.GetBytes(myData.GetOrdinal("MyFile"), 0, RawData, 0, CType(FileSize, Integer))
          
                Using Fs As New IO.FileStream("E:\" & myData!Name.ToString, IO.FileMode.OpenOrCreate, IO.FileAccess.Write)
                  Fs.Write(RawData, 0, CType(FileSize, Integer))
                  Fs.Close()
                End Using
          Ansonst, falls jemand etwas zu verbessern hätte....

          Comment

          Working...
          X