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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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