Hallo zusammen,
nachdem ich in vielen Foren/Webseiten/Suchmaschinen nichts zu meinem Problem gefunden habe was passen könnte, versuche ich es mal hier:
Wir wollen ein open source-Produktionplanungssystem (MES) einsetzen, das Postgres-datenbanken nutzt. Um ein paar Daten aus dem System in eine SPS bzw. ein SCADA-System zu übertragen, damit eine Maschine automatisch vom MES angesteuert läuft ( ein paar wenige Felder), brauchen wir einen “Connector”.
Zum Testen habe ich mir die DB-Inhalte in PGadmin angesehen und testweise von einem XAMPP-System abgerufen, um sie mir ansehen zu können.
Daten sind da, können abgerufen werden, alles “normal”.
Zum Einstieg für unseren Connector habe ich unter WINDOWS (mit MinGW64 unter OrwellDev-C++ und auch wxDev-C++) die Beispiele aus der Postgres-Doku ausprobiert, wobei ein fundamentales Problem auftritt:
PQExec, PQnfields,PQntuples etc geht alles problemlos und fehlerfrei, ABER der Aufruf von PQgetvalue crashed intern. Aufgerufen wird die Funktion, kommt aber nicht mehr zurück …
Das habe ich mit den aktuellen Download-Binaries der Versionen 9,10,11 und unter WIN7-64 und WIN10-64 getestet, es benimmt sich überall genauso. Da ich mir nicht vorstellen kann, dass ein solcher fundamentaler BUG nicht schon lange gemeldet wäre, liegt es wohl an unserer Systemumgebung oder schlimmer, an mir …
Irgendeine Idee, was ich da falsch mache oder den Bug nicht sehe bzw. nicht weiß? Der Codeschnipsel unten wird ja genau so in 100en von Programmen benutzt …
.
.
.
/* first, print out the attribute names */
nFields = PQnfields(res);
for (i = 0; i < nFields; i++)
printf(“%-15s”, PQfname(res, i));
printf(“\n\n”);/* next, print out the rows */
for (i = 0; i < PQntuples(res); i++)
{
for (j = 0; j < nFields; j++)
printf(“%-15s”, PQgetvalue(res, i, j)); > <— hier crashed das Programm in PQgetvalue
printf(“\n”);
}
.
.
.
Danke schon mal im Voraus,
Jürgen