Vous n'êtes pas identifié(e).

#1 Re : C et C++ » PSQL Select bigint from a database // C » 18/09/2014 15:47:56

Bonjour,


Merci pour votre indication et la fonction "atol" qui rend bien le 'int' attendu. En revanche, lorsque j'essaie de l'utiliser pour des "float" seuls apparaissent les nombres avant la virgule. Par exemple sur la base de données j'ai le 'real' 12.45, avec lecture d'un code C j'obtiens '12.000000'.


Edit: Avec la fonction 'atof' mon 'real' 12.45 de la base de données se transforme en 12.4502... Y-a-t'il une astuce pour lire les "float" ?

Je vous remercie par avance pour votre aide,
Cordialement

#2 Re : C et C++ » Ecriture d'integer dans une base de données à partir d'un code C » 17/09/2014 11:34:31

Bonjour,


Merci pour votre aide ! J'ai retesté le code sans la ligne
binaryVal = (uint32_t) compteurI; //compteurI est un int


Soit le code suivant :
//binaryVal = (uint32_t) compteurI; //compteurI est un int
paramValues[0] = (char *) &compteurI;
paramLengths[0] = sizeof(compteurI);
paramFormats[0] = 1;        /* binary */


res=PQexecParams(conn,"insert into input(\"T1\") values ($1::integer)",
1, // number parameters
NULL, // let the backend deduce param type
paramValues, //
paramLengths, //
paramFormats, //
1);


Et le codage persiste "1" correspond à 16777216 dans la base de données... ?! Est-ce que ça peut être lié à l'affichage des colonnes de ma base de données ?

#3 C et C++ » Ecriture d'integer dans une base de données à partir d'un code C » 17/09/2014 10:22:23

efluence
Réponses : 3

Bonjour,


J'ai installé PostgreSQL 9.3 et souhaite à partir d'un code C communiquer (écrire et lire) dans ma base de donnée. La connexion avec la base de données fonctionne et je suis capable d'écrire dans la base de données mais une question subsiste : je cherche à écrire un "integer" (genre 1, 2, 3, 4...) et dans ma base de données, surprise j'obtiens : 16777216 (=2^24), 33554432 (=2^25), 50331648 (=2^24 + 2^25), 67108864 (=2^26)...


J'ai lu dans la doc de PostgreSQL que les integer sont associés au uint32, mais pourquoi le chiffre "1" est-il associé au 24ème bit ? Comment puis-je procéder pour effectivement lire le "1,2,3,4..." dans ma base de données et non "16777216", etc. ?


La partie de code que j'utilise :
binaryVal = (uint32_t) compteurI; //compteurI est un int

paramValues[0] = (char *) &binaryVal;
paramLengths[0] = sizeof(binaryVal);
paramFormats[0] = 1;        /* binary */


res=PQexecParams(conn,"insert into input(\"T1\") values ($1::integer)",
1, // number parameters
NULL, // let the backend deduce param type
paramValues, //
paramLengths, //
paramFormats, //
1);


Je vous remercie par avance pour toute aide que vous pourrez me fournir !
Bonne journée !

Pied de page des forums

Propulsé par FluxBB