PostgreSQL
La base de données la plus sophistiquée au monde.

Ouverture de session

Navigation

Contactez-nous

Administration du site :
"equipe chez postgresqlfr point org"

Contact presse :
"fr chez postgresql point org"

Contact association :
"bureau chez postgresqlfr point org"

Questions PostgreSQL :
 IRC :
  serveur irc.freenode.net
  canal #postgresqlfr

Recherche

Accéder aux archives

« Octobre 2008  
Lun Mar Mer Jeu Ven Sam Dim
  2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31  

Syndication

Flux XML

Sondage

Quelle est la version de PostgreSQL la plus répandue sur vos serveurs ?
8.3
10%
8.2
42%
8.1
40%
8.0
2%
7.4
6%
7.3 ou antérieure
0%
Nombre de votes: 48

libpq - comment récupérer une clé primaire

Technique - interfaces | libpq - comment récupérer une clé primaire

Par Rocou le 27/04/2007 - 08:35

Mon soucis est de récupérer une clé primaire à l'aide de la fonction
PQgetvalue(). Cela fonctionne très bien pour tout ce qui est stocké au format texte mais cela ne fonctionne pas du tout pour récupérer une clé au format int4. Comment faire?
Exemple:

res =PQexec("SELECT * FROM \"ma_table\" WHERE toto = 5");
printf("la clé: %i\n", PQgetvalue(res,0,0));

Je devrais obtenir '2' or j'obtiens une valeur du style '2560262'

Options d'affichage des commentaires

Sélectionnez la méthode d'affichage des commentaires que vous préférez, puis cliquez sur "Sauvegarder les paramètres" pour activer vos changements.

Le sujet n'a pas l'air de pas

Rocou/ = 27 Avril, 2007 - 15:24

Le sujet n'a pas l'air de passionner les foules :-)
Néanmoins, je m'auto-réponds après une bonne journée de recherches.
le bout de code:

int field_type;
int *int_val;

res = PQexecParams(...);

field_type =PQftype(res,0);
int_val = (int *) PQgetvalue(res, 0, 0);
printf("int_val: %i\n",*int_val);

Et voilà. Pour se servir de int_val comme paramètre d'un PQexecParams, il faut d'abord le convertir en chaîne. (sprintf() ou itoa())


© PostgreSQLFr, tous droits réservés.
Site déclaré à la CNIL sous le numéro 1074678, conformément à la Loi en vigueur.