2013-06-19 4 views
0

Peut-être répondues ici: storing image to byte[] into Mysql using asp.net and c#Saving Byte [] Array pour MYSQL

  Byte[] bt = null; 
      bt = imageToByteArray(pictureBox1.Image);  

      MySqlCommand _insert = new MySqlCommand("Insert INTO itemimage set imageName = '" +bt+ "'", _con); 
      _insert.ExecuteNonQuery(); 


    public byte[] imageToByteArray(System.Drawing.Image imageIn) 
    { 
     MemoryStream ms = new MemoryStream(); 
     imageIn.Save(ms, System.Drawing.Imaging.ImageFormat.Gif); 
     return ms.ToArray(); 
    } 

+++++++++++++++

Table: itemimage 
2 | System.Byte[] | 13byte  

3 | System.Byte[] | 13byte 

Quel est le problème avec ce code? Merci.

Répondre

2

Quel est le problème avec ce code?

Vous utilisez la concaténation de chaînes pour former le SQL. Cela appelle ToString sur un tableau d'octets, ce qui donne le résultat System.Byte[]. Au lieu de cela, utilisez une requête paramétrée et définissez la valeur du paramètre sur votre tableau d'octets.

Quelque chose comme ceci:

var data = ImageToByteArray(pictureBox.Image); 
using (var cmd = new MySqlCommand("INSERT INTO itemimage SET imageName = @image", 
            _con)) 
{ 
    cmd.Parameters.Add("@image", MySqlDbType.Blob).Value = data; 
    cmd.ExecuteNonQuery(); 
} 

Rappelez-vous, je suis un peu préoccupé par le nom de colonne ici - est-ce vraiment censé être le nom d'une image (qui est ce que le nom de la colonne suggère) ou les données dans une image (ce qui est ce que votre code suggère)? Ce sont deux choses très différentes, et vous devriez préciser qui est qui.

Vous devez toujours utiliser des requêtes paramétrées:

  • Ils permettent d'éviter SQL injection attacks
  • Ils réduisent problèmes de conversion de données
  • Ils séparent le code à partir des données plus proprement
+0

Pouvez-vous faire un exemple de code monsieur Jon, désolé noob ici. Merci pour votre considération. – rahstame

+0

@lordzden: Voir mes modifications. –

+1

maintenant j'ai eu: (Binary/Image). Encore une fois, merci d'être généreux avec votre exemple. Maintenant, je peux comprendre plus. J'espère que cela pourrait aussi aider d'autres personnes comme moi. Bonne journée.! – rahstame