可能在这里回答:使用byte[]和asp.net将图像存储到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这个代码有什么问题?谢谢。
发布于 2013-06-19 07:53:16
这个代码有什么问题?
您正在使用字符串连接来形成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();
}请注意,我有点担心这里的列名--它真的意味着是图像的名称(这是列名所指的)还是图像中的数据(这就是代码所暗示的)?这是两件非常不同的事情,你应该清楚哪一件是哪一件。
您应该始终使用参数化查询:
https://stackoverflow.com/questions/17185739
复制相似问题