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. ver.2 PyGreSQLエラー:from _pg import * ImportError:DLLのロードに失敗しました:指定されたモジュールが見つかりませんでした

    2. ORA-00984:列はここでは許可されていません

    3. SQLServerは番号で列を選択します

    4. Mysqlでの行レベルのロック