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