2

ここで答え られる可能性があります: asp.net と c# を使用して、画像をバイト [] に格納して 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

このコードの何が問題になっていますか? ありがとう。

4

1 に答える 1

5

このコードの何が問題になっていますか?

文字列連結を使用して 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();
}

ここで列名について少し心配です-それは本当に画像の名前(列名が示唆するもの)または画像内のデータ(コードが示唆するもの)であることを意味していますか?これらは 2 つの非常に異なるものであり、どちらがどちらであるかを明確にする必要があります。

パラメータ化されたクエリを常に使用する必要があります。

于 2013-06-19T07:53:16.287 に答える