PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV Mobile (précédentes versions) → Stocker des images dans une bdd SQL Server
Stocker des images dans une bdd SQL Server
Débuté par Sylvain, 28 mai 2019 16:59 - 2 réponses
Posté le 28 mai 2019 - 16:59
Bonjour à tous,

Je suis en train de développer une application android en Windev mobile (22) permettant à un utilisateur d'associer une ou plusieurs photos à un article existant dans une bdd SQL Server

Etant obligé de me connecter à ma base de données en passant par un webservice, j'utilise la fonction SQLConnecteWS donc je dois forcément passer par les fonction SQL pour stocker mes données (pas de Hajoute, de requête crées depuis Windev, etc..)

Pour ce faire, je prend une photo avec l'appareil photo de mon appareil (un ZEBRA TC-20) que je met dans un champ image.

J'aimerais stocker cette photo dans ma table ARTICLE_IMAGE qui est sur un serveur et qui est composée de 5 champs :
codearticle : nvarchar(50)
image1 : image
image2 : image
image3 : image
image4 : image

Seulement lorsque je crée ma requête, c'est le chemin de l'image qui est enregistré, et pas l'image elle même.

Ma requête :
INSERT INTO ABARTICLE_IMAGE (codearticle, image1) VALUES ('"+SAI_Article+"',CONVERT(BINARY,'"+IMG_ApercuPhoto+"'))


J'ai cherché un peu partout sans trouver de solution, est-ce que quelqu'un aurait une idée pour m'aider svp?

Merci d'avance
Membre enregistré
3 335 messages
Popularité : +93 (137 votes)
Posté le 01 juin 2019 - 03:08
Salut Sylvain,
si tu passe par un WS, il faut utilisé la fonction encode (base64) pour transféré ton image.
puis sur le WS, la fonction décodé.
et vu que c'est sous SQL Serveur
je te conseil de lire cet page
https://www.sqlserver.fr/blog/inserer-une-image-dans-sql-server/
Posté le 03 juin 2019 - 09:06
Salut Popoy,
Merci pour ta réponse, pour mon insert j'ai essayé avec ça :

bufFichier est un Buffer = fChargeTexte(IMG_ApercuPhoto)
sImg64 est une chaîne ANSI = Crypte(bufFichier,"",crypteAucun,encodeBASE64)
sREQINS est une chaîne = "INSERT INTO ABARTICLE_IMAGE(Codearticle, image1) VALUES('"+SAI_Article+"','"+sImg64+"')"


et le select pour afficher l'image :
sReq est une chaîne = "SELECT image1,image2,image3,image4 FROM ABARTICLE_IMAGE where codearticle='"+SAI_Article+"'"
SI SQLExec(sReq,"REQIMG")=Faux ALORS //Gestion erreur si la requête n'a pas été executée
SQLInfoGene("REQIMG") // Genere l'erreur
Info(SQL.MesErreur)
Sablier(Faux)
SQLDéconnecte() // Deconnexion SQL
RETOUR
SINON
SQLPremier("REQIMG")
SI SQLCol("REQIMG",1)<>"" ALORS
IMG_PhotoArticle1=Décrypte(SQLCol("REQIMG",1),"",crypteAucun,encodeBASE64)
IMG_PhotoArticle1..Visible=Vrai
BTN_AjoutPhoto1..Visible=Faux
SINON
IMG_PhotoArticle1..Visible=Faux
BTN_AjoutPhoto1..Visible=Vrai
FIN

Ça à l'air de fonctionner, merci beaucoup pour ton aide