Saving Byte[] Array to MYSQL
本文关键字:to MYSQL Array Byte Saving | 更新日期: 2023-09-27 18:19:03
可能答案如下:使用asp.net和c#将byte[]中的图像存储到Mysql中
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
这段代码有什么问题?谢谢。
这段代码有什么问题?
您正在使用字符串连接来形成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注入攻击
- 它们减少了数据转换问题
- 他们将代码与数据更清晰地分离