c# - 将 Byte[] 数组保存到 MYSQL

标签 c# mysql arrays

可能在这里回答: 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/

相关文章:

c# - 如何从嵌入式 Uri 资源(png 图像)加载 System.Drawing.Bitmap 对象?

c# - 空的 Outlook 加载项会导致立即崩溃

c# - 在 IEnumerable 上使用 C# 实现的 PowerShell 中的 GetEnumerator

从 URL 参数获取 MySQL 行的 PHP 代码

C# GetType().GetField 在数组位置

c# - 有约束为约束

mysql - 查找使用 UNION 的 MySQL 查询替代方案 - 以便比较它们的速度

mysql - 除了mysql之外,在哪里存储信息

arrays - 如何在 Ruby 中将整数数组压缩为范围和整数数组

python - Numpy.argsort - 看不出有什么问题