Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger

 << zurück
Linux-UNIX-Programmierung von Jürgen Wolf
Das umfassende Handbuch – 2., aktualisierte und erweiterte Auflage 2006
Buch: Linux-UNIX-Programmierung

Linux-UNIX-Programmierung
1216 S., mit CD, 49,90 Euro
Rheinwerk Computing
ISBN 3-89842-749-8
gp Kapitel A Funktionsreferenz
  gp B.1 ANSI C
  gp B.2 ANSI C99
  gp B.3 Elementare E/A-Funktionen
  gp B.4 Fortgeschrittene Ein-/Ausgabe-Funktionen
  gp B.5 Verzeichnisse
  gp B.6 Attribute von Dateien und Verzeichnissen
  gp B.7 Links
  gp B.8 Prozess und Prozessverwaltungsfunktionen
  gp B.9 Signale – Das neue Signalkonzept
  gp B.10 Interprozesskommunikationen
  gp B.11 Sys-V-Interprozesskommnunikationen
  gp B.12 Threadprogrammierung
  gp B.13 Netzwerkprogrammierung
  gp B.14 MySQL C-API
  gp B.15 PostgreSQL C-API
  gp B.16 Weitere Funktionsreferenzen auf der Buch-CD


Rheinwerk Computing

B.15 PostgreSQL C-API  downtop


Rheinwerk Computing

B.15.1 Übersetzen einer Anwendung  downtop

Benötigte Headerdatei:

#include <libpq-fe.h>

Compileraufruf (benötigt Pfad zum Include-Verzeichnis von PostgreSQL API):

$ gcc -c -I/usr/include/pgsql client_anwendung.c

Linkeraufruf (benötigt Pfadangaben zu den Bibliotheken von PostgreSQL API):

$ gcc -o client_anwendung client_anwendung.o \
  -L/usr/lib/pgsql -lpq

Rheinwerk Computing

B.15.2 Eine Verbindung zum PostgreSQL-Server herstellen  downtop

PGconn *PQconnectdb(const char *conninfo);
PGconn *PQsetdbLogin(const char *pghost,
                     const char *pgport,
                     const char *pgoptions,
                     const char *pgtty,
                     const char *dbName,
                     const char *login,
                     const char *pwd);
PGconn *PQsetdb(char *pghost,
                char *pgport,
                char *pgoptions,
                char *pgtty,
                char *dbName);
/* Nichtblockierende Funktionen */
PGconn *PQconnectStart(const char *conninfo);
PostgresPollingStatusType PQconnectPoll(PGconn *conn);

Rheinwerk Computing

B.15.3 Status und Informationen zur Verbindung ermitteln  downtop


Tabelle B.75    Status und Informationen zur Verbindung ermitteln

Funktion Bedeutung
ConnStatusType PQstatus( const PGconn *conn); Status des Verbindungsaufbaus überprüfen
char *PQdb( const PGconn *conn); Gibt einen Zeiger zurück auf den Datenbanknamen der Verbindung.
char *PQuser( const PGconn *conn); Gibt den Benutzernamen der Verbindung zurück.
char *PQpass( const PGconn *conn); Gibt das Passwort der Verbindung zurück.
char *PQhost( const PGconn *conn); Gibt den Serverhostnamen der Verbindung zurück.
char *PQport( const PGconn *conn); Gibt den Port der Verbindung zurück.
char *PQtty(const PGconn *conn); Gibt das TTY für die Debugausgaben der Verbindung zurück.
char *PQoptions( const PGconn *conn); Gibt Konfigurationsoptionen die der Verbindungsanfrage übergeben wurden zurück.
int PQsocket( const PGconn *conn); Gibt die Deskriptornummer des mit dem Server verbundenen Sockets zurück. Bei –1 wird angezeigt, dass keine Verbindung besteht.
int PQbackendPID( const PGconn *conn); Gibt die Prozesskennung (PID) des Serverprozesses zurück, der mit dieser Verbindung arbeite zurück.
SSL *PQgetssl( const PGconn *conn); Hier wird eine SSL-Struktur zurückgegeben. Wird SSL nicht verwendet wird NULL zurückgegeben. Mehr dazu entnehmen Sie ggf. aus der Anleitung von OpenSSL.


Rheinwerk Computing

B.15.4 Verbindung beenden oder wieder aufnehmen  downtop


Tabelle B.76    Verbindung beenden oder wieder aufnehmen

Syntax Bedeutung
void PQfinish(PGconn *conn); Verbindung schließen und den Speicher für das PGconn-Objekt wieder freigegeben
void PQreset(PGconn *conn); Schließt die Verbindung zum Server und versucht eine neue Verbindung zum selben Server mit den gleichen Parametern aufzubauen
int PQresetStart(PGconn *conn); PostgresPollingStatusType PQresetPoll(PGconn *conn); Für nicht blockierenden Verbindungen gibt es diese Funktionen die Versuchen eine Verbindung zu schließen und erneut mit demselben Server eine neue nicht blockierende Verbindung aufzubauen


Rheinwerk Computing

B.15.5 SQL-Anfragen an den Server machen und den Status auswerten  downtop


Tabelle B.77    Anfrage an den Server und den Status auswerten

Syntax Bedeutung
PGresult *PQexec( PGconn *conn, const char *command); Anfragen an den Server
ExecStatusType PQresultStatus( const PGresult *res); Rückgabe-Status der Anfrage
char *PQresStatus( ExecStatusType status); Macht aus den von PQresultStatus() zurückgegebenen Wert eine aussagekräftige Stringkonstante
char *PQresultErrorMessage( const PGresult *res); wie PQresultStatus() und PqresStatus() in einem Rutsch


Rheinwerk Computing

B.15.6 Ergebnis einer SQL-Anfrage auswerten  downtop


Tabelle B.78    Funktionen, um das Ergebnis einer Anfrage auszuwerten

Funktion Bedeutung
int PQntuples( const PGresult *res); Gibt die Anzahl der Zeilen (Tuples) des Anfrageergebnisses zurück.
int PQnfields( const PGresult *res); Gibt die Anzahl der Spalten in einer Zeile des Anfrageergebnisses zurück.
char *PQfname( const PGresult *res, int spalten_nummer); Gibt den Namen der Spalte spalten_nummer – beginnend bei 0 – zurück.
int PQfnumber( const PGresult *res, const char *field_name); Gibt die Nummer der Spalte zum angegebene Spaltennamen field_name zurück.
Oid PQftype( const PGresult *res, int spalten_nummer); Hiermit können Sie den Datentypen der Spalte erfahren. Eine Übersicht der OIDs finden Sie in der Datei pg_type.h (meistens im Verzeichnis von libpq im Pfad server/catalog/pg_type.h zu finden).
int PQfmod( const PGresult *res, int spalten_nummer); Gibt die typenspezifischen Modifikationsdaten der Spalte (beginnend mit 0) mit der angegebenen Nummer zurück.
int PQfsize( const PGresult *res, int spalten_nummer); Gibt die Größe in Bytes der Spalte spalten_nummer zurück. Wird –1 zurückgegeben, handelt es sich um einen String variabler Länge.
int PQbinaryTuples( const PGresult *res); Diese Funktion gibt 1 zurück, wenn PGresult binäre Zeilendaten enthält. Bei 0 handelt es sich um Texdaten.
void PQclear(PQresult *res); Speicherplatz der Anfrage freigeben


Rheinwerk Computing

B.15.7 Rückgabe des Anfrageergebnisses auslesen  downtop


Tabelle B.79    Rückgabe des Anfrageergebnisses auslesen

Syntax Bedeutung
char* PQgetvalue( const PGresult *res, int zeilen_nummer, int spalten_nummer); Einzelne Spaltenwerte auslesen
int PQgetisnull( const PGresult *res, int zeilen_nummer, int spalten_nummer); Testet ob, der Wert einer Spalte gleich NULL ist
int PQgetlength( const PGresult *res, int zeilen_nummer, int spalten_nummer); Länge des Datenwertes einer Spalte


Rheinwerk Computing

B.15.8 Ergebnisse anderer Befehle ermitteln  toptop


Tabelle B.80    Ergebnisse anderer Befehle ermitteln

Syntax Bedeutung
char * PQcmdStatus( PGresult *res); Gibt eine Statuszeichenkette für einen Befehl (bspw.: INSERT 16994 1) zurück
char * PQcmdTuples( PGresult *res); Gibt die Anzahl der Zeilen, die auf einen SQL-Befehl wie INSERT, UPDATE oder DELETE eine Auswirkung hatte, zurück
Oid PQoidValue( const PGresult *res); Gibt entweder einen (ganzzahligen) Wert vom Typ Oid oder im Falle eines Fehlers InvalidOid zurück
char * PQoidStatus( const PGresult *res); Gibt eine Zeichenkette mit der OID der eingefügten Zeile zurück, wenn die SQL-Anweisung ein INSERT war – ansonsten 0 wenn die Zieltabelle keine OIDs hatte. Wenn der SQL-Befehl kein INSERT war, wird ein leerer String zurückgegeben.

 << zurück
  
  Zum Rheinwerk-Shop
Neuauflage: Linux-UNIX-Programmierung
Neuauflage:
Linux-UNIX-
Programmierung

bestellen
 Ihre Meinung?
Wie hat Ihnen das Openbook gefallen?
Ihre Meinung

 Buchtipps
Zum Rheinwerk-Shop: Linux-Server






 Linux-Server


Zum Rheinwerk-Shop: Das Komplettpaket LPIC-1 & LPIC-2






 Das Komplettpaket
 LPIC-1 & LPIC-2


Zum Rheinwerk-Shop: Linux-Hochverfügbarkeit






 Linux-
 Hochverfügbarkeit


Zum Rheinwerk-Shop: Shell-Programmierung






 Shell-
 Programmierung


Zum Rheinwerk-Shop: Linux Handbuch






 Linux Handbuch


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und der Schweiz
Info





Copyright © Rheinwerk Verlag GmbH 2006
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das Openbook denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt.
Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de

Cookie-Einstellungen ändern