Vous n'êtes pas identifié(e).
bonjour,
voila, je comprend pas trop, j'ai l'erreur suivante sur cette petite portion de code
 char *paramValues[5];
    int   LengthValues[5];
    int   FormatValues[5];
    
     ...
     realvalue[0] = 2.2;
     paramValues[0] = (char*)&realvalue[0];
     LengthValues[0] = sizeof(realvalue[0]);
     printf("%f  %d\n",realvalue[0],LengthValues[0]);
     FormatValues[0] = 1;
     res = PQexecPrepared(conn,
                          "",
                          1,
                          paramValues,
                          LengthValues,
                          FormatValues,
                          1);
     testres(res);j'ai l'erreur suivante, et je ne sais pourquoi :
longueur invalide dans la valeur externe ½ numeric
si je comprend bien il rale sur le fait que la longeur est mauvaise mais bon , c'est la longueur d'un double
je sais pas si cela a avoir mais voici comment la table est creer
CREATE TABLE tab_3 (col_1 numeric(53,2), col_2 BIGINT, col_3 TEXT)
si qqn a une idée.??
merci
a++
Hors ligne
Un "double" n'a pas forcément un format 51.2. Je suppose que ParamValues[0] est la valeur de col_1. Que donne un printf de cette valeur ? Et quelle est la requête associée au PQexecPrepared ?
Guillaume.
Hors ligne
salut et merci
la requete est ceci
 res =  PQprepare  (conn,
                       "",
                       "INSERT INTO tab_3 VALUES ($1, 2, 'kk')",
                       1,       /* one param */
                       NULL); 
et le printf donne ceci
2.200000 8
les données sont declaré comme ceci
double  realvalue[5];
merci
a++
Dernière modification par elekis (27/11/2008 15:35:44)
Hors ligne
Deux autres questions :
  * quelle version de PostgreSQL ?
  * quelle valeur pour LengthValues[0] ?
Guillaume.
Hors ligne
c'est la version 8.3 de postgres
et lenthtvalues[0] = 8   c'est le second chiffre imprimé par 
 printf("%f  %d\n",realvalue[0],LengthValues[0]);
et donc 2.200000  8
merci
a+++
Dernière modification par elekis (27/11/2008 15:48:53)
Hors ligne
Hors ligne
chtit up :-(
Hors ligne
bon alors, j'avance
la ou je comprend pas, c'est que si je met 
intValues[0] =5;
      dans la db, j'ai   83886080
et si je met 
intValues[0] =83886080;
dans la db, j'ai 5.
ha vi et 83886080 en hexa , cela donne 5000000
KEZAKO???? comprend plus trop :-(
merci
a++
Dernière modification par elekis (28/11/2008 12:11:17)
Hors ligne