由於某種原因,當我嘗試更新用戶的圖像時,我的代碼失敗。圖像未正確保存。例如,38千字節的圖像在數據庫中保存爲13個字節。C#將圖像保存爲MySql數據庫blob
這是我的代碼:
public void UploadImage(Image img)
{
OpenConnection();
MySqlCommand command = new MySqlCommand("", conn);
command.CommandText = "UPDATE User SET UserImage = '@UserImage' WHERE UserID = '" + UserID.globalUserID + "';";
byte[] data = imageToByte(img);
MySqlParameter blob = new MySqlParameter("@UserImage", MySqlDbType.Blob, data.Length);
blob.Value = data;
command.Parameters.Add(blob);
command.ExecuteNonQuery();
CloseConnection();
}
public byte[] imageToByte(Image img)
{
using (var ms = new MemoryStream())
{
img.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
return ms.ToArray();
}
}
OpenConnection的和closeconnection只是conn.Open()和conn.Close()。
有沒有人有任何想法是怎麼回事?
你的問題是'UserImage ='@ UserImage',用'UserImage = @ UserImage'或者更常規的'UserImage =?UserImage'取代它,它會起作用。你發送一個字符串,因此有10個字節。 – bokibeg
只是一個側面說明,但你確定你想保存爲一個blob。 http://stackoverflow.com/questions/1347461/saving-images-files-or-blobs –