Im Internet gibt es einige Beispiele wie in einer Oracle-DB od. MySQL-Db solche Daten abgelegt werden, aber ich konnte bis jetzt noch kein Beispiel für eine DB2 finden.
Der Connect zur DB2 erfolgt über ADO, die GIF-Datei wird mit einem ADODB.Stream per LoadfromFile eingelesen.
: fs.Read(fs.Size)(0) : 71 : Byte :
: fs.Read(fs.Size)(1) : 73 : Byte :
: fs.Read(fs.Size)(2) : 70 : Byte :
.
.
.
: fs.Read(fs.Size)(1492) : 0 : Byte :
: fs.Read(fs.Size)(1493) : 0 : Byte :
: fs.Read(fs.Size)(1494) : 59 : Byte :
Will ich nun per ADODB.Command EXECUTE den Datensatz wegschreiben erhalte ich folgende Fehlermeldung:
Laufzeitfehler '-2147217900 (80040e14)
[DB2/NT]SQL0104N Auf "ID,BILD)values(1" folgte das unerwartete Token
"END-OF-STATEMAENT". Zu den möglichen Token gehören: ")". SQLSTATE=42601
Das zugehörige Makro habe ich auf die wesentlichen Bestandteile gekürzt .
Dim i_ID As Integer
'
I_ID = 1
'
'DB2 Connection
Set Modul2.db2_cn = New ADODB.Connection
With Modul2.db2_cn
.ConnectionString = " Provider=IBMDADB2;User ID=Administrator;PWD=xxxxxxx;network adress = xxx.xx.x.xx;Data Source=RECRM_01;Location=xxxxxxxx:50000;Mode=ReadWrite;"
.Open
End With
Set mystream = New ADODB.stream
With mystream
' Festlegen, daß ein Binäres Format gelesen wird
.Type = adTypeBinary
.Open
End With
Set Modul2.cmd = New ADODB.Command
Modul2.cmd.ActiveConnection = Modul2.db2_cn
'
' GIF - Datei in Stream einlesen
'
mystream.LoadFromFile "c:\logo.gif"
'
' Daten in db2 wegschreiben
'
Modul2.cmd.CommandText = "INSERT INTO RECRM.CRM_TYREprofile" & _
"(ID,BilD)values" & _
"(" & CStr(i_ID) & _
",'" & _
mystream.Read & _
"')"
Modul2.cmd.Execute'
mystream.Close
'
' Ende
'
End Sub