2013-06-19 41 views
0

可能已經回答了這裏: storing image to byte[] into Mysql using asp.net and c#保存byte []數組到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 

有什麼不對本碼?謝謝。

回答

2

這段代碼有什麼問題?

您正在使用字符串連接來組成SQL。這就是在字節數組上調用ToString,結果爲System.Byte[]

而是使用參數化查詢,並將參數值設置爲您的字節數組。

事情是這樣的:

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(); 
} 

你要知道,我有點擔心這裏的列名 - 是它真正的意思是名的圖像(這是列名建議)或數據在圖像(這是你的代碼建議)?這是兩個完全不同的東西,你應該清楚哪個是哪個。

你應該總是使用參數化查詢:

+0

你能做到分開一個例子代碼先生喬恩,對不起在這裏。感謝您的考慮。 – rahstame

+0

@lordzden:看我的編輯。 –

+1

現在我得到了:(二進制/圖像)。再次感謝您對您的榜樣慷慨解囊。現在我可以瞭解更多。我希望這可以幫助像我這樣的其他人。美好的一天。! – rahstame