PQexec(conn, "BEGIN") und PQclear?

Hallo,

wofür benutzt man den Befehlt PQexec(conn, “BEGIN”) und anschließend Clear()?

Leider finde ich in dem Handbuch keine beschreibung.

Ich möchte mit PQExec Tabellen füllen.

Ich habe auch ein beispiel erstellt dass funktioniert.

Mir ist nur nicht klar, wie man es algemein machen sollte.

z.b. im konstruktor einer Klasse die Verbindung zur Datenbank herstellen und im Destruktor dann löschen, so dass permanent die datenbank zur verfügung steht.

Muß PQexec(conn, “BEGIN”) vor jedem PQExec ausgeführt werden, oder nur einmal?

Gibt es dazu eine beschreibung? Bin absoluter Neuling mit SQL und CO. Vielleicht habe ich daher noch viele Fragen…

Es interessiert mich generell wie man PQExec ausführt und auch die Prüfung ob es funktioniert hat. Und was sonst noch nach dem Befehl passieren sollte…

Danke für Tipps,


Patrick

PQExec(), um einen Befehl an den Server zu schicken, PQClear() um en durch ein Ergebnis auf dem Server belegten Platz freizugeben.

Leider finde ich in dem Handbuch keine beschreibung.

Unvollständiges Handbuch?
PostgreSQL: Documentation: Manuals: PostgreSQL 8.2: Command Execution Functions

Ich möchte mit PQExec Tabellen füllen.

INSERT …

Muß PQexec(conn, “BEGIN”) vor jedem PQExec ausgeführt werden, oder nur einmal?

Mit BEGIN startest Du eine Transaktion. Kann man machen, muß man nicht. Man sollte aber.

Gibt es dazu eine beschreibung? Bin absoluter Neuling mit SQL und CO. Vielleicht habe ich daher noch viele Fragen…

schaue in meine Linksammlung bei del.icio.us

Andreas

Danke für den Link und die Erklärung.

Ich habe den Befehl PQExec mit Begin benötigt, da ich ohne diesen nicht ein blob schreiben konnte.

Werde mal die Beispiele auf Deiner Seite anschauen.

Patrickl

Ich verstehe noch immer nicht wie man z.B. eine Tabelle anlegt und etwas reinschreibt.

Wenn ich in der Eingabeaufforderung
CREATE TABLE Program (i int4);
INSERT INTO TBL1 values (10);

eingebe erscheint eine Tabelle wie ich es mir vorstelle.

Wenn ich in c++ folgendes implementiere erhalte ich keine Fehlermeldung, aber auch keine Tabelle. Was ist hier falsch? Wieso sehe ich im pgadmin nichts?

res = PQexec(conn, “CREATE TABLE Program (i int4);”);
if (PQresultStatus(res) != PGRES_COMMAND_OK)
{
fprintf(stderr, “BEGIN command failed: %s”, PQerrorMessage(conn));
PQclear(res);
exit_neat();
}
PQclear(res);

res = PQexec(conn, “INSERT INTO TBL1 values (10);”);
if (PQresultStatus(res) != PGRES_COMMAND_OK)
{
fprintf(stderr, “BEGIN command failed: %s”, PQerrorMessage(conn));
PQclear(res);
exit_neat();
}
PQclear(res);

Wie muß man dies machen? Verbinden und so weiter funktioniert alles…


vielen Dank für hinweise!


Patrick

Wenn du ein BEGIN am Anfang hast … hast du auch ein COMMIT am Ende?