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 - PQexecParams - Erreur lors du passage de paramètres en mode binaire

Technique - interfaces | libpq - PQexecParams - Erreur lors du passage de paramètres en mode binaire

Par Jean-Pierre DUVAL le 02/02/2007 - 17:35

Est-ce que quelqu'un peut m'aider Ă  comprendre pourquoi PQexecParams ne fonctionne pas correctement quand j'utilise des parametres en mode binaire ?

J'utilise PostgreSQL 8.1 sur Windows XP. Le serveur de base de données et le client sont sur le meme ordinateur. Pieces jointes:
1) Table utilisée.
2) Un exemple qui utilise le mode texte qui fonctionne.
3) Le meme exemple qui utilise le mode binaire qui ne fonctionne pas.

Est-il posible de tracer le comportement de libpq?

Jean-Pierre DUVAL, Product Manager - jp.duval@up-comp.com - www.up-comp.com

* * *

TABLE scott.emp
/*************/
CREATE TABLE scott.emp
(
empno int4 NOT NULL,
ename varchar(10) NOT NULL,
job varchar(9),
mgr int4,
hiredate date,
sal float8,
comm float8,
deptno int4 NOT NULL
) WITHOUT OIDS;

* * *

long Working(PGconn *HandleConnexion)
/***********************************/
{
Oid TableParametresTypesTransmis[]={INT4OID};
char *Valeur="10";
char *TableParametresValeursTransmis[]={(char *)Valeur};
int TableParametresTaillesTransmis[]={2};
int TableParametresFormatsTransmis[]={0};

PGresult *Handle;
long NbEnregistrements;

Handle=PQexecParams(HandleConnexion,
"SELECT ename, hiredate, empno, sal FROM scott.emp WHERE deptno=$1::int4",
1,TableParametresTypesTransmis,TableParametresValeursTransmis,TableParametresTaillesTransmis,TableParametresFormatsTransmis,1);
if (!Handle)
return(0);
switch (PQresultStatus(Handle))
{
case PGRES_COMMAND_OK :
case PGRES_TUPLES_OK :
case PGRES_COPY_OUT :
case PGRES_COPY_IN :
case PGRES_NONFATAL_ERROR :
break;

case PGRES_EMPTY_QUERY :
LireNbEnregistrementsAffectes=0;
return(1);
break;

default :
break;
}
NbEnregistrements=(long)PQntuples(Handle);
/********************************************/
/* NbEnregistrements == 3, ce qui est VRAI. */
/********************************************/
return(NbEnregistrements);
}

long NotWorking(PGconn *HandleConnexion)
/**************************************/
{
Oid TableParametresTypesTransmis[]={INT4OID};
int Valeur=10;
char *TableParametresValeursTransmis[]={(char *)&Valeur};
int TableParametresTaillesTransmis[]={sizeof(int)};
int TableParametresFormatsTransmis[]={1};

PGresult *Handle;
long NbEnregistrements;

Handle=PQexecParams(HandleConnexion,
"SELECT ename, hiredate, empno, sal FROM scott.emp WHERE deptno=$1::int4",
1,TableParametresTypesTransmis,TableParametresValeursTransmis,TableParametresTaillesTransmis,TableParametresFormatsTransmis,1);
if (!Handle)
return(0);
switch (PQresultStatus(Handle))
{
case PGRES_COMMAND_OK :
case PGRES_TUPLES_OK :
case PGRES_COPY_OUT :
case PGRES_COPY_IN :
case PGRES_NONFATAL_ERROR :
break;

case PGRES_EMPTY_QUERY :
LireNbEnregistrementsAffectes=0;
return(1);
break;

default :
break;
}
NbEnregistrements=(long)PQntuples(Handle);
/********************************************/
/* NbEnregistrements == 0, ce qui est FAUX. */
/********************************************/
return(NbEnregistrements);
}

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.

Bonsoir Pourquoi ne pas ut

Christophe Chauvet/ = 7 FĂ©vrier, 2007 - 19:49

Bonsoir

Pourquoi ne pas utiliser ce qui est décrit dans cette partie ?

Cordialement.

Christophe Chauvet
KrysKool.org


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