none
Programmgesteuertes Einfügen von Dateien in ein Anlagenfeld in Access 2007 mit VB-NET RRS feed

  • Frage

  • Hallo,
    ich habe eine Anwendung geschrieben, die Zugriff auf eine ACCESS 2007 Datenbank hat:

     

    con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=C:\test.accdb"
    cmd.Connection = con

    Jetzt möchte ich eine Datei (z.B. ein Bild) in ein Anlage-Feld hinzufügen, wobei der Pfad in einer Variablen gespeichert ist.
    Habe es mit diversen SQL_Strings versucht.... Ich komme nicht drauf.

    Bin über Hilfe sehr dankbar !!!

    Gruß Mike


    Sonntag, 28. Juni 2009 18:17

Antworten

  • Hallo Mike,

    Hier noch ein Code der ein Bild in einem OLE Object Feld einer Access 2007 Datenbank speichert. Du kannst sehen auch die SQL Abfrage.



    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim oConn As OleDb.OleDbConnection
            Dim oComm As OleDb.OleDbCommand
    
            Dim Err As String
            Dim sInsertQuery As String
            Dim FSO As New System.IO.FileStream("Pfad des Bildes", IO.FileMode.Open, IO.FileAccess.Read)
            Try
                sInsertQuery = "insert into images([image]) VALUES(?)"
    
                oConn = New OleDb.OleDbConnection("ConnectionString")
                oConn.Open()
                oComm = New OleDb.OleDbCommand(sInsertQuery, oConn)
                Dim imgArrayByte(CType(FSO.Length() - 1, Integer)) As Byte
                FSO.Read(imgArrayByte, 0, imgArrayByte.Length)
                FSO.Close()
    
                Dim QueryParameter As New OleDb.OleDbParameter("@Picture", _
                                                               OleDb.OleDbType.LongVarBinary, _
                                                               imgArrayByte.Length, ParameterDirection.Input, _
                                                               False, 0, 0, Nothing, DataRowVersion.Current, _
                                                               imgArrayByte)
                oComm.Parameters.Add(QueryParameter)
                oComm.ExecuteNonQuery()
                MsgBox("Bild wurde in der Datenbank erfolgreich gespeichert", MsgBoxStyle.OkOnly, "Erfolgreich gespeichert")
    
            Catch Ex As Exception
                Err = Ex.Message
                MsgBox("Fehler : " & Err, MsgBoxStyle.OkOnly, "Fehler aufgetreten")
            Finally
                oConn = Nothing
                oComm = Nothing
            End Try
    
        End Sub

     

    Du musst noch folgendes einfügen:


    Imports System.Data.OleDb


    Grüße,

    Sonntag, 28. Juni 2009 19:10
    Moderator
  • Hallo Mike,

    hier gibt es ein ausführliches Beispiel, auf Basis von VB.NET und "Access" (Jet): Reading and writing BLOB in ADO.NET

    Viel Erfolg!
    Sonntag, 28. Juni 2009 18:48

Alle Antworten

  • Hallo Mike,

    hier gibt es ein ausführliches Beispiel, auf Basis von VB.NET und "Access" (Jet): Reading and writing BLOB in ADO.NET

    Viel Erfolg!
    Sonntag, 28. Juni 2009 18:48
  • Hallo Mike,

    Hier noch ein Code der ein Bild in einem OLE Object Feld einer Access 2007 Datenbank speichert. Du kannst sehen auch die SQL Abfrage.



    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim oConn As OleDb.OleDbConnection
            Dim oComm As OleDb.OleDbCommand
    
            Dim Err As String
            Dim sInsertQuery As String
            Dim FSO As New System.IO.FileStream("Pfad des Bildes", IO.FileMode.Open, IO.FileAccess.Read)
            Try
                sInsertQuery = "insert into images([image]) VALUES(?)"
    
                oConn = New OleDb.OleDbConnection("ConnectionString")
                oConn.Open()
                oComm = New OleDb.OleDbCommand(sInsertQuery, oConn)
                Dim imgArrayByte(CType(FSO.Length() - 1, Integer)) As Byte
                FSO.Read(imgArrayByte, 0, imgArrayByte.Length)
                FSO.Close()
    
                Dim QueryParameter As New OleDb.OleDbParameter("@Picture", _
                                                               OleDb.OleDbType.LongVarBinary, _
                                                               imgArrayByte.Length, ParameterDirection.Input, _
                                                               False, 0, 0, Nothing, DataRowVersion.Current, _
                                                               imgArrayByte)
                oComm.Parameters.Add(QueryParameter)
                oComm.ExecuteNonQuery()
                MsgBox("Bild wurde in der Datenbank erfolgreich gespeichert", MsgBoxStyle.OkOnly, "Erfolgreich gespeichert")
    
            Catch Ex As Exception
                Err = Ex.Message
                MsgBox("Fehler : " & Err, MsgBoxStyle.OkOnly, "Fehler aufgetreten")
            Finally
                oConn = Nothing
                oComm = Nothing
            End Try
    
        End Sub

     

    Du musst noch folgendes einfügen:


    Imports System.Data.OleDb


    Grüße,

    Sonntag, 28. Juni 2009 19:10
    Moderator
  • ja, das funktioniert wunderbest.
    Vielen Dank dafür !

    Gruß
    Mike

    Dienstag, 30. Juni 2009 11:50