可能在这里回答: storing image to byte[] into Mysql using asp.net and c#
using System.Drawing;
using System.Drawing.Imaging;
var imageBytes = imageToByteArray(pictureBox1.Image);
var insert = new MySqlCommand("Insert INTO itemimage set imageName = '" + imageBytes + "'", _con);
insert.ExecuteNonQuery();
public byte[] imageToByteArray(Image imageIn)
{
var ms = new MemoryStream();
imageIn.Save(ms, ImageFormat.Gif);
return ms.ToArray();
}
Table: itemimage
2 | System.Byte[] | 13byte
3 | System.Byte[] | 13byte
这段代码有什么问题?谢谢。
最佳答案
What is wrong with this code?
您正在使用字符串连接来形成 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();
}
请注意,我有点担心这里的列名称 - 它真的是图像的名称(这就是列名称所暗示的内容)还是图像中的数据(这是您的代码所建议的)?这是两个截然不同的事情,你应该弄清楚哪个是哪个。
您应该始终使用参数化查询:
- 他们阻止SQL injection attacks
- 它们减少了数据转换问题
- 它们更清晰地将代码与数据分开
关于c# - 将 Byte[] 数组保存到 MYSQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17185739/