Bonjour,
Je travaille sous Windows XP SP2 et Qt 4.5.1
Voilà mon problème: Je souhaite exécuter deux commandes DOS en pipe avec QProcess. Voici la commande complète:
En gros ces commandes doivent importer le contenu d'un fichier shape dans une BD Postgresql. Tout est bon pour la connexion à la BD (d'ayeur c'est pour ça que je met ce sujet en dehors du sous-forum SGBD de ce forum).
Code : Sélectionner tout - Visualiser dans une fenêtre à part C:\\PostgreSQL\\8.4\\bin\\shp2pgsql.exe -dDI shapefile shape_import_table | C:\\PostgreSQL\\8.4\\bin\\psql.exe -d amsdb -U amsdb -p 5433
J'ai vu la doc de QProcess et j'ai essayé d'appliquer. Je n'ai pas d'erreur de compilation mais mon programme se plante à l'exécution. Mon code est le suivant:
J'espère que quelqu'un ici a une idée
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
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 cmd1 = new QProcess; cmd1->setProcessChannelMode(QProcess::ForwardedChannels); QString prg1("C:\\PostgreSQL\\8.4\\bin\\shp2pgsql.exe"); QStringList args1; args1 << "-dDI"; args1 << shapefile; //shapefile est une QString représentant le nom du fichier shape à importer à là BD args1 << "shape_import_table"; cmd2 = new QProcess; cmd2->setProcessChannelMode(QProcess::ForwardedChannels); QString prg2("C:\\PostgreSQL\\8.4\\bin\\psql.exe"); QStringList args2; args2 << "-d"; args2 << "amsdb"; args2 << "-U"; args2 << "amsdb"; args2 << "-p"; args2 << "5433"; cmd1->setStandardOutputProcess(cmd2); int res1 = cmd1->execute(prg1,args1); int res2 = cmd2->execute(prg2,args2); res = QString::number(res1) + QString::number(res2); QMessageBox::critical(0,"RES Process", res); cmd1->~QProcess(); cmd2->~QProcess();
Partager