首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Byte[]数组保存到MYSQL

将Byte[]数组保存到MYSQL
EN

Stack Overflow用户
提问于 2013-06-19 07:51:13
回答 1查看 20.1K关注 0票数 2

可能在这里回答:使用byte[]和asp.net将图像存储到Mysql中

代码语言:javascript
复制
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();
}
代码语言:javascript
复制
Table: itemimage
2 | System.Byte[]  | 13byte    

3 | System.Byte[]  | 13byte

这个代码有什么问题?谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-19 07:53:16

这个代码有什么问题?

您正在使用字符串连接来形成SQL。这是在一个字节数组上调用ToString,这将给出System.Byte[]作为结果。

相反,使用参数化查询,并将参数值设置为字节数组。

就像这样:

代码语言:javascript
复制
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注入攻击
  • 它们减少了数据转换问题。
  • 它们更清晰地将代码与数据分开。
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17185739

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档