Der hier beschriebene Source-Code bezieht sich auf die Verwendung von VBScript. Die Verwendung in VB oder VBA ist analog.
Um Dateien als Binary importieren zu können muss zunächst eine Stream-Objekt erstellt werden, welches die zu importierende Datei repräsentiert:
Dim strFile strFile = "C:\Temp\Test.jpg" Dim objStream Set objStream = CreateObject("ADODB.Stream") objStream.Open objStream.Type = adTypeBinary objStream.LoadFromFile(strFile)
Anschließend kann eine normale ADO Verbindung mit dem SQL-Server aufgebaut werden. In diesem Fall wird mit Windows-Authentifizierung eine Verbindung mit der Datenbank Test gemacht:
Dim cnn, rst Set cnn = CreateObject("ADODB.Connection") cnn.Open "Provider=SQLOLEDB.1; Data Source=(local); " & "Integrated Security=SSPI;Initial Catalog=Test;" Set rst = CreateObject("ADODB.Recordset")
In dieser Datenbank ist eine Tabelle Table1 vorhanden, die über zwei Spalten verfügt: FileName und Bild, wobei Bild vom Datentyp image
ist. Der Import wird in eine Transaktion gekapselt:
cnn.BeginTrans rst.Open "Table1", cnn, adOpenForwardOnly, adLockOptimistic rst.AddNew rst.Fields("FileName").Value = strFile rst.Fields("Bild").AppendChunk(objStream.Read) rst.Update rst.close cnn.CommitTrans
Schließlich werden noch alle Objekte wieder freigegeben:
' Clean-Up objStream.Close cnn.Close Set rst = Nothing Set objStream = Nothing Set cnn = Nothing
Das komplette Skript kann auch als VBS-Datei gedownloaded werden.
Link: How to load a Binary File into an Oracle BLOB with ADO