Mysql
 sql >> база данни >  >> RDS >> Mysql

Вземете изображение от MySQL база данни - C#

Какво ще кажете за съхраняването на изображението в двоично поле? Би имало повече смисъл, отколкото Base64 да го кодира:

void SaveImage(byte[] image)
{
    using (var conn = new MySqlConnection(ConnectionString))
    using (var cmd = conn.CreateCommand())
    {
        cmd.CommandText = "INSERT INTO pictures (Product, Manufacturer, Description, Price, Image) VALUES ('New_Product', 'New_Manufacturer', 'New_Description', '0', ?Image)";
        cmd.Parameters.Add("?Image", image);
        cmd.ExecuteNonQuery();    
    }
}

byte[] GetImage(string product)
{
    using (var conn = new MySqlConnection(ConnectionString))
    using (var cmd = conn.CreateCommand())
    {
        cmd.CommandText = "SELECT Image FROM pictures WHERE Product = ?product";
        cmd.Parameters.Add("?product", product);
        using (var reader = cmd.ExecuteReader())
        {
            if (!reader.Read())
            {
                return null;
            }

            const int CHUNK_SIZE = 2 * 1024;
            byte[] buffer = new byte[CHUNK_SIZE];
            long bytesRead;
            long fieldOffset = 0;
            using (var stream = new MemoryStream())
            {
                while ((bytesRead = reader.GetBytes(reader.GetOrdinal("Image"), fieldOffset, buffer, 0, buffer.Length)) > 0)
                {
                    stream.Write(buffer, 0, (int)bytesRead);
                    fieldOffset += bytesRead;
                }
                return stream.ToArray();
            }
        }
    }
}

и след това:

using (var ms = new MemoryStream())
{
    pictureBox1.Image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
    SaveImage(ms.ToArray());
}

и когато искате да извлечете:

byte[] image = GetImage("New_Product");
MemoryStream stream = new MemoryStream(image);
pictureBox2.Image = Image.FromStream(ms);



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Пребройте броя на редовете в кошчетата за 30 дни

  2. c# Имам проблеми с mysql:Неправилен код на стойността на низа 1366 за колона на ред 1

  3. Как да ускоря SELECT .. LIKE заявките в MySQL на множество колони?

  4. Как да възстановя дъмп файл от mysqldump?

  5. MySQL получава всички уникални стойности между две колони