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

#1 13/01/2013 16:55:36

Carmichael_fr
Membre

PostgreSQL et Embarcadero C++ XE3

Bonjour,

Je souhaiterai échanger une expérience avec des personnes utilisant :
- Windows 7 SP1
- Embarcadero C++ XE3
- PostrgreSQL 9.1
- Les drivers Devart 3.3

L'idée est que dans un projet C++, il est tout à fait possible de se connecter à une base Postgres avec Embarcadero, mais j'ai constaté que l'écriture dans la base posait un problème :

1/ Au niveau de l'EDI, l'explorateur de données autorise les modifications, mais en fait seule la 1ere est bien enregistrée. Les autre modifications ne sont pas transmises au moteur Postgres. Tout se passe comme si la 2ème modif restait dans le cache.
Question : Est-il posible de vérifier que l'EDI a envoyé une requete dans Postgres ?
Autre formulation : Comment voir si un appel à Postrgres a été effectué  ? Mise en trace de Postgres ?

2/ Au niveau d'un projet en C++.
Si on suit la cinématique : TSQLConnection1 => TSimpleDataSet1 => DataSource1 => TSQLGrid1
Le projet compile parfaitement, la consultation fonctionne, les données d'une tables sont affichées dans la grille, mais les modifications ne sont pas envoyées à Postgres, ou du moins, je ne les vois pas.
Est-ce qu'une personne aurait une idée ?


Cordialement

Carmichael_fr

Hors ligne

#2 13/01/2013 17:03:20

gleu
Administrateur

Re : PostgreSQL et Embarcadero C++ XE3

Ne connaissant pas embarcadero, je ne répondrais pas ce qui concerne ce framework. Je ne vais répondre qu'à cette question (qui est à ma portée smile ) :

Question : Est-il posible de vérifier que l'EDI a envoyé une requete dans Postgres ?
Autre formulation : Comment voir si un appel à Postrgres a été effectué  ? Mise en trace de Postgres ?

Le plus simple est de tracer toutes les requêtes exécutées par PostgreSQL. Pour cela, il vous suffit de configurer le paramètre log_min_duration_statement à 0 dans le fichier postgresql.conf.


Guillaume.

Hors ligne

#3 13/01/2013 17:12:26

rjuju
Administrateur

Re : PostgreSQL et Embarcadero C++ XE3

Pour la partie embarcadero, avez-vous vérifié qu'il ne faille pas forcer l'écriture, avec un DataSet.post  (de mémoire) pour appliquer les modifications ?

Hors ligne

#4 14/01/2013 23:00:59

Carmichael_fr
Membre

Re : PostgreSQL et Embarcadero C++ XE3

Bonjour,

Alors d'abord merci de répondre aux attentes des utilisateurs même le dimanche !
Je vais potasser un peu la doc sur la mise en trace, car je ne suis pas DBA, mais je pense que ça devrait aller, la doc est claire.

Pour ce qui est de la 2ème intervention, ce n'est plus DataSet.post, mais :
SimpleDataSetPostgres->ApplyUpdates(0);
et l'objet SimpleDataSetPostgres effectue l'ordre d'envoi. Merci tout de même pour la suggestion.

Cordialement
Carmichael_fr

Hors ligne

Pied de page des forums