Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
#51 08/08/2011 21:39:59
- gleu
- Administrateur
Re : C vs C++
Quelle est la requête complète ?
Guillaume.
Hors ligne
#52 09/08/2011 10:07:37
- Postgres.0
- Membre
Re : C vs C++
Update table set (clé, date1) =(1999422, Aµ(U)
Dernière modification par Postgres.0 (09/08/2011 10:13:44)
Hors ligne
#53 09/08/2011 10:16:12
- Postgres.0
- Membre
Re : C vs C++
la valeur de la date avant d'être transformée en binaire était :
2011-04-01 09:21:26
Dernière modification par Postgres.0 (09/08/2011 10:20:11)
Hors ligne
#54 09/08/2011 10:17:24
- Postgres.0
- Membre
Re : C vs C++
Cette date pose un problème aussi bien au curseur binaire qu'au curseur normal.
j'ai des cotes autour de mes dates (literal) et autre varchar.
sauf que quand j'appelle PQescapeByteaConn, elle me double les cotes autour de la date...
Et quand je parcours la chaine pour transformer les doubles cotes en cotes simple, il me sort des erreurs sur mes données bytea, sur les antislash.
Est ce qu'on peut appliquer succesivement PQescapeliteral et PQescapeByteaConn a la même chaine de caractère.
Je pose cette question, car, dans ma requetes Insert, il y a des champs de type varchar, bytea, char, date, int...
Dernière modification par Postgres.0 (09/08/2011 16:26:37)
Hors ligne
#55 09/08/2011 17:33:29
- gleu
- Administrateur
Re : C vs C++
PQescapeliteral est uniquement pour les chaînes de caractères, PQescapeByteaConn pour les bytea. Ça ne doit pas être utilisé avec les autres types.
Guillaume.
Hors ligne
#56 10/08/2011 16:15:04
- Postgres.0
- Membre
Re : C vs C++
gleu :
j'ai une nouvelle erreur : : ERROR: invalid byte sequence for encoding "UTF8": 0x00
En cherchant sur internet, j'ai compris que j'envoie au serveur un caractère de fin de chaine qu'il ne sait pas lire.
Est-ce-que vous avez une idée de comment le supprimer de ma requete ?
Hors ligne
#57 10/08/2011 17:25:30
- Postgres.0
- Membre
Re : C vs C++
Pour faire plus simple je vous mets ma requete, je ne sais ps si vous pouvez la tester chez vous
INSERT INTO Table(raisondemautob,pc,xi,trans,merchant) values (E'\000 \000\001',E'\001c\000\000\000\002@\000\000\000\342`\342\374\241\2656\307?\363b\210\207*\223G\345\177J\205\333\232!{u1u\325\203\207 k\324 8f\307^L\266,\326\221\234\222\370\360\372:.3'\302\236\262*oW\372\031\363\341%\370\003\004\000\000\000\000\000\000\000\004\020\000\000\000\273\273r\331\355\0047\346\364\253L\310+\262{\261\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000',E'',E'',E'\001\303\001\000\000\002\240\001\000\000\261+K\034\352\012\246\023\344;\224\267B).3K\324`,\236P\302#)\370\304\001:\242\375\347\344\210\177\007\034\2553\304\377^\211\036\012\374\323\321\333#\356\353\011\025D5\220\253\272;6Ax~\002\003\312\356\213{p\314\305\210\244\2648\347\370\3446\246\011\002\365u^\201B\355\003_(\234\010\243?\026\343\261[p\206\372\354|\333\202\215\360g \344\300pSl\262\252\246\330\317\270\360\254q\254\276\373\011\325}\024\027*\350\354\323\374\214\375R\353\331\207d\367\340\243\211<\270!<\004\253\0102>\313\316 \2526\320\325\\?\345\265\341\252C\026\214\200-\024y\030\252\371\210\023wD\364\370Z?\007\303\222yn\025+\012\205y\367\010\013C'\316,\214\220L(Y\277\333lO\347P\021O}\276\334'\226\2677\232V\220(\200\231\356\200]\022\321\001\240]o\252\272\212\341\206X\234\026bG\377+\030\350\224\277\340\021\252qK\305\254\327C\365\351cm\334\207\253\252\274\011\346\256n\177\263 \357\227\204w\365\262s\223\321Dm\307O{c\270\331\211_'\010\017\224z\301\361@~\260\204WkA\300\2265rG\020\273\256\013\260y\032\366\327\200\025\256\314)Y\320\276\301\206\273\301[\374s \256l\314\202(\213\247\362\341\320+\367\344^\235P\270y\245\274g\354\335\014.\3442\2411\342\206\230\347\355\242*$/\215V\304\366\325/\212Av\200g\203\035!\275\324M\205Y\004C\376\243u0\344-\213\262\254x\003\003\004\000\000\000\000\000\000\000\004\020\000\000\000K\367\371\223\327\010\353\215\2678(\252"\363A\312')
Hors ligne
#58 10/08/2011 17:28:29
- Postgres.0
- Membre
Re : C vs C++
tous les champs sont des bytea.
Hors ligne
#59 11/08/2011 10:07:06
- Postgres.0
- Membre
Re : C vs C++
Je ne pense pas que les données soient vraiment au bon format binaire.
Dernière modification par Postgres.0 (11/08/2011 10:08:07)
Hors ligne
#60 16/08/2011 14:01:03
- gleu
- Administrateur
Re : C vs C++
Pour infos, il ne fait pas ajouter de E avant la chaîne de données binaires.
Guillaume.
Hors ligne
#61 18/08/2011 11:46:31
- Postgres.0
- Membre
Re : C vs C++
ok, je penses que mes données en bytea sont altérées !
J'ai une question concernant PQgetResult() :
Imaginez que j'envoie, avec PQsendQuery, la commande composée de "Begin; Insert1; Insert2; Insert3; End;"
En suite, je boucle sur PQgetResult() mais la je remarque que Insert1 s'est mal passé : il m'affiche, en bonne et dûe forme, le message suivant, grace à PQresultErrorMessage : "duplicate key value violates unique constraint".
Ma question est : si le deuxième Insert s'est mal passé, comment je pourrais faire pour recupérer le message d'erreur avec PQresultErrorMessage, car là, cette aapi me renvoie une chaine vide.
Hors ligne
#62 18/08/2011 13:14:53
- gleu
- Administrateur
Re : C vs C++
Ce serait bien de créer un nouveau thread pour chaque nouvelle question.
Néanmoins, pour répondre à votre question, PQerrorMessage renvoie le bon message d'erreur en ce qui me concerne.
Guillaume.
Hors ligne
#63 18/08/2011 13:50:24
- Postgres.0
- Membre
Re : C vs C++
Ok, je le ferrai .
En fait, je boucle comme ça while(NULL != (result = PQgetResult(conn))), mais si il trouve une erreur à la première instruction, il sort de la boucle du coup je ne peux plus savoir si les autres instructions ce sont bien passées.
Hors ligne
#64 18/08/2011 13:56:18
- Postgres.0
- Membre
Re : C vs C++
Je me suis dit que je dois peut être utilisé PQconsumeInput(conn_in) et !PQisBusy(conn_in) pour pouvoir gérer ce problème.
Hors ligne