Servus Bigspliff,
ich habe es damals so gelöst.
Musst dir halt nur die Dateiendung merken und schon kannste alles in der DB abspeichern. Beim Auslesen der Daten hängst du an die Datei nur noch die ehemalige Endung an und schon haste das was damals in die DB gespeichert wurde.
In den Funktionen muss "strfile" immer den vollständigen Pfad + Dateinamen enthalten.
Das Feld in der Tabelle was die Daten empfängt ist vom Typ "OLEOBJECT".
Public Function UmwandelnDateiToBinär(ByVal strfile As String, & _
ByRef Daten() As Byte) As Boolean
'
Dim fs As FileStream
Try
'Dateiiänge
Dim myfilelength As Int64
'
'Filestream
fs = New FileStream(strfile, FileMode.Open)
'
'Dateilänge bestimmen
myfilelength = fs.Length
'
'Byte-Array redimensionieren
ReDim Daten(myfilelength - 1)
'
'Datei lesen und in den Puffer schreiben
fs.Read(Daten, 0, myfilelength)
fs.Close()
Return True
Catch ex As Exception
Return False
End Try
End Function
Public Function UmwandelnBinärToDatei(ByVal strfile As String, ByVal Daten As _
Array) As Boolean
'
'Dateiiänge
Dim myfilelength As Int64
'
'Filestream
Dim fs As FileStream = New FileStream(strfile, FileMode.OpenOrCreate)
Try
'
'Dateilänge bestimmen
myfilelength = Daten.Length
'
'Datei in Dateinamen speichern
fs.Write(Daten, 0, myfilelength)
Return True
Catch ex As Exception
fs.Close()
Return False
Finally
fs.Close()
End Try
End Function
Public Function Binär_Speichern(ByVal Daten() As Byte, ByVal Dateiname as _
String, & _
ByVal Dateityp As String) as Boolean
Dim Verbindung As OleDbConnection
Verbindung = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data" & _
"Source=" & Datenbankpfad & ";")
'So jetzt muss nur noch der SQL-Query generiert werden
Dim SqlBefehl As String
Dim Command As New OleDbCommand()
'OLDB Command
SqlBefehl = "INSERT INTO TabelleDatei(Length,Dateiname,Dateityp)" & _
" VALUES(Length,Dateiname,Dateityp)"
'Parameter zum Oldb Command hinzufügen und Wert zuweisen
Command.Parameters.Add("Length", OleDbType.Integer).Value = Daten.Length
Command.Parameters.Add("Dateiname", OleDbType.VarChar).Value = Dateiname
Command.Parameters.Add("Dateityp", OleDbType.VarChar).Value = Dateityp
Command.CommandText = SqlBefehl
Command.Connection = Verbindung
Try
' Datenbankverbindung öffnen
Verbindung.Open()
'Daten in die Datenbank schreiben
If Command.ExecuteNonQuery() = 1 Then
MsgBox("Die Änderung wurde erfolgreich in die Datenbank geschrieben.", _
MsgBoxStyle.Information)
Return True
Else
MsgBox("Die Änderung konnte nicht in die Datenbank geschrieben werden.", _
MsgBoxStyle.Exclamation)
Return False
End If
Catch ex As Exception
'Hier kommste hin, wenns nicht geklappt hat
MessageBox.Show(ex.Message.ToString)
Return False
Finally
'Datenbankverbindung schließen
Verbindung.Close()
End Try
End Function
End Class Wenn du einen Eintrag mal wieder verändern willst, machste das dann so:
Command.Parameters.Clear()
SqlBefehl = "UPDATE TabelleDatei SET" & _
"Length=@Length,Dateiname=@Dateiname,Dateityp=@Dateityp, Where ID=" + ID
Command.Parameters.AddWithValue("@Length", Daten.Length)
Command.Parameters.AddWithValue("@Dateiname", Dateiname)
Command.Parameters.AddWithValue("@Dateityp", Dateityp) Hoffe dass ich dir helfen konnte.
Jedes Programm,
in das sich ein Fehler einschleichen kann,wird auch einen enthalten.
Beitrag wurde zuletzt am 24.02.10 um 15:14:18 editiert. |