【发布时间】:2023-03-15 00:43:01
【问题描述】:
由于某种原因,当我尝试为用户更新图像时,我的代码失败了。图像未正确保存。例如 38 kib 的图像在数据库中保存为 13 字节。
这是我的代码:
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 个字节。 -
只是附注,但您确定要保存为 blob。 stackoverflow.com/questions/1347461/…