Probleme stockage image postgresql

ducker88 Messages postés 277 Date d'inscription lundi 9 février 2004 Statut Membre Dernière intervention 4 mai 2008 - 15 sept. 2006 à 14:57
ducker88 Messages postés 277 Date d'inscription lundi 9 février 2004 Statut Membre Dernière intervention 4 mai 2008 - 15 sept. 2006 à 16:41
Bonjour à tous,


Je suis en train de realisé une application en C# (ecrit sour visual
studio 2005) et je communique avec une base postgres via l'ODBC.

Je souhaiterai stocké une image dans ma table, j'ai donc créé un champ de type bytea.

Du coté de mon logiciel je transforme mon image en tableau de byte.


Le problème est que quand j'essaye de faire le transfert j'ai l'erreur suivante : type "lo" does not exist


Quelqu'un peu t'il m'aider ?


Merci par avance.

duck88

6 réponses

sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 36
15 sept. 2006 à 14:59
aurais-tu un bout de code à nous montrer ?

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]
0
ducker88 Messages postés 277 Date d'inscription lundi 9 février 2004 Statut Membre Dernière intervention 4 mai 2008
15 sept. 2006 à 15:07
BIENSUR !!!

Conversion de l'image en byte

            MemoryStream ms = new MemoryStream();
            Image mon_image;
            mon_image = this.pictureBox1.Image;
            byte[] tableau;
            mon_image.Save(ms, mon_image.RawFormat);
            tableau = (byte[])(ms.ToArray());

Pour la generation des requetes j'ai utilisé l'assistant voici le code qu'il me donne :

this.odbcCommand1.CommandText = "INSERT INTO "public".images  (id_image, image) VALUES (?,?)";
            this.odbcCommand1.Connection = this.odbcConnection1;
            this.odbcCommand1.Parameters.AddRange(new System.Data.Odbc.OdbcParameter[] {
            new System.Data.Odbc.OdbcParameter("id_image", System.Data.Odbc.OdbcType.Int, 0, "id_image"),
            new System.Data.Odbc.OdbcParameter("Param2", System.Data.Odbc.OdbcType.VarChar, 1024)});

J'insère ma data dans mon le dataset generé par l'adapter et fait un uptdate de celui ci :

DataRow row = dataSet11.Tables[0].NewRow();
            row[0] = 1;
            row[1] = tableau ;

            dataSet11.Tables[0].Rows.Add(row);
            odbcDataAdapter1.Update(dataSet11);

Merci de ton aide

duck88
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 36
15 sept. 2006 à 15:22
je pense que le problème vient du fait que tu utilises un champ VarChar pour stocker ton image. Utilise plutot un champ binaire... (blob)

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]
0
ducker88 Messages postés 277 Date d'inscription lundi 9 février 2004 Statut Membre Dernière intervention 4 mai 2008
15 sept. 2006 à 15:32
J'ai changé le type du champ en varbinary et pourtant j'ai toujours le probleme du 'lo' (large object)

duck88
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 36
15 sept. 2006 à 15:33
hum... quelle taille fait ton image ?

je vois que tu ne réserves que 1024 pour la place... donc à priori... 1ko ? non !?!

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]
0
ducker88 Messages postés 277 Date d'inscription lundi 9 février 2004 Statut Membre Dernière intervention 4 mai 2008
15 sept. 2006 à 16:41
L'image etait bien superieur au 1024 donc j'ai changé la taille du buffer, mais rien n'y fait.
Une precision importante est que c'est une erreur lors de l'update et c'est l'odbc qui renvoi une erreur de postgres.

duck88
0
Rejoignez-nous