Stocker fichier en base de données champs BLOB
Bonjour à tous,
Je souhaite dans mon VBS, faire un INSERT dans une table "t_message" d'une base de données Mysql. Le but de cette requête est d'archiver un fichier stocké sur mon disque dur en base, je souhaite donc insérer son contenu binaire.
Voici ma table "t_message" avec le champ BLOB "contenu" :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| CREATE TABLE `t_message` (
`id_message` int(10) unsigned NOT NULL auto_increment,
`from_message` varchar(200) default NULL,
`to_message` varchar(200) default NULL,
`objet_message` varchar(300) default NULL,
`date_message` datetime default NULL,
`recup_message` tinyint(1) unsigned NOT NULL default '0',
`from_dns_message` varchar(200) default NULL,
`taille_message` int(10) unsigned default '0',
`id_contenu` int(10) unsigned default NULL,
`contenu` blob,
PRIMARY KEY (`id_message`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1; |
J'ai donc trouvé une fonction me retournant le flux binaire du fichier passé en paramètre :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
Function ReadBinaryFile(FileName)
Const adTypeBinary = 1
'Create Stream object
Dim BinaryStream
Set BinaryStream = CreateObject("ADODB.Stream")
'Specify stream type - we want To get binary data.
BinaryStream.Type = adTypeBinary
'Open the stream
BinaryStream.Open
'Load the file data from disk To stream object
BinaryStream.LoadFromFile FileName
'Open the stream And get binary data from the object
ReadBinaryFile = BinaryStream.Read
End Function |
J'essaye donc de construire ma requête avec un simple string :
Code:
1 2 3 4
| set objConnect = CreateObject("ADODB.Connection")
objConnect.Open "test_mysql"
req = "Insert into T_Message (from_message, to_message, objet_message,date_message, from_dns_message, taille_message, id_contenu, contenu) values ('" & from_message & "','" & to_message & "','" & objet_message & "','" & date_message & "','" & from_dns_message & "'," & taille_message & "," & id_contenu & ", " & ReadBinaryFile("c:\test.jpg") & ");"
objConnect.Execute req |
Je ne suis pas spécialement étonné que ça ne marche pas (étant donné que j'insère du binaire dans un string). Cependant je ne vois pas comment faire...Peut être faudrait t'il passer par l'objet Command et Parameter...Si quelqu'un a une idée...un exemple...??
Merci pour votre aide