Charger les images dans la base de données SQL

0000002132     -      13/01/2025

Cette programmation montre un exemple de module permettant de récupérer les images sauvées "en URL" (dans un champ de type caractère) et de les charger dans la base de données SQL (dans un champ de type image) pour tous les articles.

Ce module est appelé à partir d'un bouton ajouté dans la fiche article.

Si un filtre est appliqué, celui-ci est pris en compte.

Zoom
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using MercatorApi;
using MercatorController;
using System.IO;
using MercatorUi;
using System.Windows.Forms;
using System.Drawing;

namespace MercatorUi.MovableControls.ButtonsCodes
{
    public static class Script
    {
        public static void Exec(MovableButton clickedButton)
        {
            Forms.Sig.SigForm sigForm = (Forms.Sig.SigForm)clickedButton.Form;
            string reqSql = "select s_id,s_image from STOCK where (s_image<>'')";
            if (!string.IsNullOrWhiteSpace(sigForm.Filter))
                reqSql += " and (" + sigForm.Filter + ")";
            List<(string s_id, string s_image)> list = Api.Zselect<(string s_id, string s_image)>(Globals.RepData, reqSql);
            if (list != null)
            {
                using (MercatorSqlConnection conn = new MercatorSqlConnection(Globals.RepData, true))
                {
                    if (conn.Connection == null)
                        return;

                    Progress.ProgressCreate(list.Count);
                    int i = 0;
                    bool err = false;
                    using (SqlCommand cmd = new SqlCommand("update STOCK set s_imagebin=@img where s_id=@s_id", conn.Connection))
                    {
                        foreach ((string s_id, string s_image) tuple in list)
                        {
                            i++;
                            Progress.ProgressIncrement(1);
                            Wait.WaitStatic.WaitWindow("Update Images : " + i + " / " + list.Count);
                            string imagePath = Globals.RepData + "IMAGES\\" + tuple.s_image;
                            if (File.Exists(imagePath))
                            {
                                cmd.Parameters.Clear();
                                cmd.Parameters.Add(new SqlParameter("@img", SqlDbType.Image)).Value = File.ReadAllBytes(imagePath);
                                cmd.Parameters.Add(new SqlParameter("@s_id", SqlDbType.Char)).Value = tuple.s_id;
                                if (!Api.SqlExec(Globals.RepData, cmd))
                                {
                                    err = true;
                                    break;
                                }
                            }
                        }
                    }
                    Progress.ProgressDestroy();
                    Wait.WaitStatic.WaitClear();
                    if (!err)
                        Dialogs.Stop("OK !");
                }
            }
        }
    }
}


Cookies fonctionnels : Cookies nécessaires à l'utilisation du site et cookies de préférence. Ils ne contiennent aucune donnée à caractère personnel. (En savoir plus)

Cookies statistiques : Captation de statistiques liées aux comportements des internautes. (En savoir plus)

Cookies marketing : Pour effectuer le suivi des visiteurs au travers des sites web, à des fins publicitaires. (En savoir plus)