vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
vb@rchiv Offline-Reader - exklusiv auf der vb@rchiv CD Vol.4  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

ADO.NET / Datenbanken
Re: Bild in Accessdatenbank speichern 
Autor: fixe
Datum: 19.08.05 11:16

Hallo, habe das Ganze mal so gelöst, als ich vor einem ähnlichen Problem stand.
Keine Garantie auf Vollständigkeit. Der Code ist aus mehreren Beispielen zusammen gefriemelt.
Name der Accessdatenbank: Datenbank.mdb
Pfadangabe: D:\TEMP\Datenbank.mdb
Tabellenname: tblBild
Spalten in tblBild: LNr -> Felddatentyp AutoWert
Bild -> Felddatentyp OLE-Objekt
Das Bild wird als Long binary-Daten in Bild eingefügt
Deshalb auch etwas zum Auslesen aus der Datenbank.

Auf der Form befindet sich:
PictureBox1
Button bntStop
Button Bild_Speichern
Button Bild_Aus_DB_Laden

Sollte das Ganze besser gehen, bitte auch eine kurze Info an mich.

Imports System.IO
Imports System.Drawing.Imaging
Imports System.Collections
Imports System.Data.OleDb
 
Public Class Form1
    Inherits System.Windows.Forms.Form
 
    Dim Puffer() As Byte = Nothing
    Dim conStr As String = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source =" & _
      "D:\TEMP\Datenbank.mdb;"
 
#Region " Vom Windows Form Designer generierter Code "
 
    Private Sub btnStop_Click(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles btnStop.Click
        Me.Close()
    End Sub
 
    Private Sub Bild_Speichern_Click(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles Bild_Speichern.Click
 
        Dim sFilenameOriginal As String
        Dim sFilenameNew As String
        Dim img As Image
 
 
        If Me.OpenFileDialog1.ShowDialog() = DialogResult.OK Then
            sFilenameOriginal = Me.OpenFileDialog1.FileName
 
            img = Image.FromFile(sFilenameOriginal)
            sFilenameNew = sFilenameOriginal.Replace("bmp", "jpg") 'bmp 
            ' ersetzen durch jpg
            img.Save(sFilenameNew, ImageFormat.Jpeg)
        End If
        'Bild Anzeigen in PictureBox1
        img = Grafik_aus_Datei_laden(sFilenameNew)
        PictureBox1.Image = img
 
        Dim LeerArray() As Byte = {}
 
        Dim SQL_String As String = "UPDATE tblBild SET Bild = @bild WHERE LNr =" & _
          "1;" ' Laufende Nummer in der tblBild
        ' Oder Vielleicht mit INSERT INTO tblBild....
        Dim con As OleDbConnection
 
        Try
            con = New OleDbConnection(conStr)
            Dim cmd = New OleDbCommand(SQL_String, con)
 
            If Puffer Is Nothing Then
                cmd.Parameters.Add("@bild", OleDbType.Binary).Value = LeerArray _
                         'Puffer in DB schreiben
            Else
                cmd.Parameters.Add("@bild", OleDbType.Binary).Value = Puffer    _
                  'Puffer in DB schreiben
            End If
 
 
            con.Open()
            cmd.ExecuteNonQuery()
            con.Close()
 
        Catch ex As Exception
            con.Close()
            MessageBox.Show(ex.ToString, "Info")
        End Try
 
    End Sub
 
    Private Function Grafik_aus_Datei_laden(ByVal Pfadangabe As String) As Image
 
        'Pfadangabe = "B:\test.bmp"
        Dim myFileLength As Integer
        Dim fs As FileStream
        Try
            fs = New FileStream(Pfadangabe, FileMode.Open)
 
            myFileLength = CInt(fs.Length)
            ReDim Puffer(myFileLength - 1)
            fs.Read(Puffer, 0, myFileLength)
 
            Dim bild As Bitmap = New Bitmap(New MemoryStream(Puffer))
 
            Return bild
            fs.Close()
 
        Catch ex As Exception
            'fs.Close()
            MessageBox.Show(ex.ToString, "info", MessageBoxButtons.OK, _
              MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, _
              MessageBoxOptions.DefaultDesktopOnly)
        End Try
    End Function
 
    Private Sub Bild_Aus_DB_Laden_Click(ByVal sender As System.Object, ByVal e _
      As System.EventArgs) Handles Bild_Aus_DB_Laden.Click
        PictureBox1.Image = Nothing
 
        Dim con As New OleDbConnection(conStr)
        Dim da As New OleDbDataAdapter("SELECT * FROM tblBild WHERE LNr = 1;", _
          con)
 
        Dim ds As New DataSet
        da.Fill(ds, "tblBild")
 
        Dim dt As DataTable = ds.Tables("tblBild")
        If dt.Rows.Count = 0 Then
            MessageBox.Show("Kein Bild gefunden")
        Else
            Dim Bytes As Byte()
            Bytes = CType(dt.Rows(0)("Bild"), Byte())
            PictureBox1.Image = New Bitmap(New MemoryStream(Bytes))
        End If
    End Sub
 
End Class
Hoffe geholfen zu haben

MfG
Uli
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Bild in Accessdatenbank speichern942Chief17.08.05 19:58
Re: Bild in Accessdatenbank speichern1.075fixe19.08.05 11:16
Re: Bild in Accessdatenbank speichern699Chief19.08.05 15:05

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel