PPL7-Icon Patrick's Programming Library Version 7.0.0 - Dokumentation
ppl7::db::ResultSet Klassenreferenzabstract

Ergebnis eines Datenbank-Selects. Mehr ...

Basisklasse für ppl7::db::MySQLResult.

Öffentliche Typen

enum  FieldType {
  TYPE_UNKNOWN =0, TYPE_INTEGER, TYPE_LONGINTEGER, TYPE_FLOAT,
  TYPE_DOUBLE, TYPE_BOOLEAN, TYPE_STRING, TYPE_DATETIME,
  TYPE_BINARY
}
 

Öffentliche Methoden

virtual ~ResultSet ()
 Destruktor der Klasse. Mehr ...
 
virtual ppluint64 affected () const =0
 Betroffene Zeilen. Mehr ...
 
virtual void clear ()=0
 Speicher freigeben, Result löschen. Mehr ...
 
virtual bool eof ()=0
 Prüfen, ob eine (weitere) Ergebniszeile vorhanden ist. Mehr ...
 
virtual AssocArray fetchArray ()=0
 Zeile in ein Assoziatives Array kopieren. Mehr ...
 
virtual void fetchArray (AssocArray &array)=0
 
virtual Array fetchFields ()=0
 Zeile in ein Array kopieren. Mehr ...
 
virtual void fetchFields (Array &array)=0
 Zeile in ein Array kopieren. Mehr ...
 
virtual String fieldName (int field)=0
 Name einer bestimmten Spalte herausfinden. Mehr ...
 
virtual int fieldNum (const String &fieldname)=0
 Spalte eines bestimmten Feldes herausfinden. Mehr ...
 
virtual int fields () const =0
 Anzahl Spalten im Ergebnis. Mehr ...
 
virtual FieldType fieldType (int field)=0
 Typ eines Feldes auslesen. Mehr ...
 
virtual FieldType fieldType (const String &fieldname)=0
 Typ eines Feldes auslesen. Mehr ...
 
virtual String getString (const String &fieldname)=0
 Wert eines bestimmten Feldes. Mehr ...
 
virtual String getString (int field)=0
 Wert eines bestimmten Feldes. Mehr ...
 
virtual void nextRow ()=0
 Nächste Result-Zeile. Mehr ...
 

Ausführliche Beschreibung

Include:
#include <ppl7-db.h>
Beschreibung:
Dies ist eine virtuelle Basisklasse für das Aufnehmen des Ergebnisses eines Datenbank-Selects. Die tatsächliche Implementierung ist Datenbank-spezifisch, daher hat jede Datenbank-Klasse eine eigene abgeleitete Implementierung davon. Mit Ihren Funktionen können die Ergebniszeilen aus einem Select durchwandert und ausgelesen werden.
Das ResultSet wird durch Aufruf verschiedener Funktionen innerhalb der Klasse ppl7::db::Database (bzw. davon abgeleiteten Klassen) erstellt und muss von der aufrufenden Anwendung selbst mit delete freigegeben werden.
Beispiel:
Das nachfolgende Beispiel zeigt unter Verwendung einer MySQL-Datenbank, wie die ResultSet-Klasse verwendet werden kann.
int DB_Result_Example1() {
// Zunächst erstellen wir eine Verbindung zu einer MySQL-Datenbank
ppl6::CAssocArray param;
param.Set("host","db.pfp.de");
param.Set("port","3306");
param.Set("user","patrick");
param.Set("password","xxxxxxx");
param.Set("dbname","test");
ppl6::db::MySQL db;
// Verbindung zur Datenbank aufbauen
if (!db.Connect(param)) {
ppl6::PrintError();
return 0;
}
// Select abschicken
ppl6::db::Result *res=db.Query("select * from user order by name");
if (!res) {
ppl6::PrintError();
return 0;
}
printf ("Es wurden %lli Datensätze gefunden:\n",res->Rows());
ppl6::CAssocArray row;
// Wir verwenden Result::FetchArray, um durch das Ergebnis zu traversieren
while ((res->FetchArray(row))) {
printf ("Name: %s, Email: %s\n",row["name"],row["email"]);
}
delete res; // Ergebnis löschen, Speicher freigeben
db.Disconnect();
} // EOF

Dokumentation der Aufzählungstypen

Aufzählungswerte
TYPE_UNKNOWN 
TYPE_INTEGER 
TYPE_LONGINTEGER 
TYPE_FLOAT 
TYPE_DOUBLE 
TYPE_BOOLEAN 
TYPE_STRING 
TYPE_DATETIME 
TYPE_BINARY 

Beschreibung der Konstruktoren und Destruktoren

ppl7::db::ResultSet::~ResultSet ( )
inlinevirtual

Der Destruktor sorgt dafür, dass sämtlicher durch die Klasse allokierter Speicher wieder freigegeben wird. Dazu wird die Funktion ResultSet::clear aufgerufen.

Dokumentation der Elementfunktionen

ppl7::db::ResultSet::affected ( ) const
pure virtual

Liefert nach einem Insert, Update oder Replace die Anzahl Datensätze zurück, die durch das Update verändert wurden. Die Information kann auch über Funktion Database::getAffectedRows der Datenbank-Klasse ausgelesen werden.

Rückgabe
Anzahl betroffender Datensätze
ppl7::db::ResultSet::clear ( )
pure virtual
Beschreibung:
Durch Aufruf dieser Funktion wird der interne Speicher und Datenbank- oder Result-spezifische Handles freigegeben. Nach Aufruf der Funktion kann daher nicht mehr auf die vormals vorhandenen Ergebnisse des Datenbank-Selects zugegriffen werden. Die Funktion braucht in der Regel nicht aufgerufen zu werden, da dies der Destruktor der Klasse automatisch macht.
ppl7::db::ResultSet::eof ( )
pure virtual

Mit dieser Methode kann geprüft werden, ob eine weitere Ergebniszeile vorhanden ist.

Rückgabe
true = weitere Ergebniszeile steht bereit, false = keine weitere Zeilen vorhanden.
ppl7::db::ResultSet::fetchArray ( )
pure virtual

Mit dieser Funktion wird eine komplette Ergebniszeile in ein Assoziatives Array vom Typ AssocArray kopiert und der interne Zeiger auf den nächsten Datensatz vorgerückt. Durch wiederholtes Aufrufen der Funktion kann man somit nach und nach alle Ergebniszeilen durchwandern.

Rückgabe
Liefert ein AssocArray mit Feldern und Werten der aktuellen Ergebniszeile zurück. Im Fehlerfall oder falls keine weiteren Ergebniszeilen vorhanden sind, wird eine Exception geworfen.
Ausnahmebehandlung
NoResultExceptionWird geworfen, wenn keine weitere Zeile im Resultset vorhanden ist.
Zu beachten
Um das werfen einer Exception am Ende des Resultsets zu vermeiden, kann vorher mit der Methode ResultSet::eof geprüft werden, ob eine weitere Zeile bereitsteht.
Bemerkungen
Bei Aufruf dieser Funktion werden die Daten der aktuellen Zeile mehrfach kopiert. Die Funktion ResultSet::FetchArray(AssocArray &array) ist daher vorzuziehen.
virtual void ppl7::db::ResultSet::fetchArray ( AssocArray array)
pure virtual
ppl7::db::ResultSet::fetchFields ( )
pure virtual

Mit dieser Funktion wird eine komplette Ergebniszeile in ein Array vom Typ Array kopiert und der interne Zeiger auf den nächsten Datensatz vorgerückt. Durch wiederholtes Aufrufen der Funktion kann man somit nach und nach alle Ergebniszeilen durchwandern.

Rückgabe
Liefert ein Array mit Feldern und Werten der aktuellen Ergebniszeile zurück. Im Fehlerfall oder falls keine weiteren Ergebniszeilen vorhanden sind, wird eine Exception geworfen.
Ausnahmebehandlung
NoResultExceptionWird geworfen, wenn keine weitere Zeile im Resultset vorhanden ist.
Zu beachten
Um das werfen einer Exception am Ende des Resultsets zu vermeiden, kann vorher mit der Methode ResultSet::eof geprüft werden, ob eine weitere Zeile bereitsteht.
Bemerkungen
Bei Aufruf dieser Funktion werden die Daten der aktuellen Zeile mehrfach kopiert. Die Funktion ResultSet::FetchFields(Array &array) ist daher vorzuziehen.
ppl7::db::ResultSet::fetchFields ( Array array)
pure virtual

Mit dieser Funktion wird eine komplette Ergebniszeile in das Array array kopiert und der interne Zeiger auf den nächsten Datensatz vorgerückt. Durch wiederholtes Aufrufen der Funktion kann man somit nach und nach alle Ergebniszeilen durchwandern.

Parameter
[out]arrayEin Objekt vom Typ Array, in dem das Ergebnis gespeichert werden soll. Daten, die vor Aufruf in array enthalten sind, werden durch die Funktion gelöscht.
Ausnahmebehandlung
NoResultExceptionWird geworfen, wenn keine weitere Zeile im Resultset vorhanden ist.
Zu beachten
Um das werfen einer Exception am Ende des Resultsets zu vermeiden, kann vorher mit der Methode ResultSet::eof geprüft werden, ob eine weitere Zeile bereitsteht.
ppl7::db::ResultSet::fieldName ( int  field)
pure virtual

Dies ist die Umkehrfunktion zu ResultSet::FieldNum. Sie liefert den Namen eines bestimmten Feldes anhand dessen Spaltennummer num zurück, sofern sie vorhanden ist.

Parameter
[in]fieldGewünschte Spaltennummer
Rückgabe
Ist die Spalte vorhanden, wird deren Namen als String zurückgegeben, im Fehlerfall wird eine Exception geworfen.
Ausnahmebehandlung
FieldNotInResultSetExceptionWird geworfen, wenn das Feld nicht im Resultset vorhanden ist.
ppl7::db::ResultSet::fieldNum ( const String fieldname)
pure virtual

Diese Funktion liefert die Spaltennummer des Feldes mit dem Namen fieldname zurück, sofern dieses vorhanden ist.

Parameter
[in]fieldnameName des gesuchten Feldes
Rückgabe
Ist das Feld vorhanden, wird dessen Spaltennummer zurückgegeben. Die Zählung der Spalten fängt dabei bei 0 an. Im Fehlerfall wird eine Exception geworfen.
Ausnahmebehandlung
FieldNotInResultSetExceptionWird geworfen, wenn das Feld nicht im Resultset vorhanden ist.
ppl7::db::ResultSet::fields ( ) const
pure virtual

Diese Funktion liefert die Anzahl Spalten im Ergebnis des vorhergehenden Selects zurück.

Rückgabe
Anzahl Spalten.
ppl7::db::ResultSet::fieldType ( int  field)
pure virtual

Mit dieser Funktion kann man abfragen, was für ein Datentyp das Feld num ist.

Parameter
[in]fieldDie gewünschte Spalte
Rückgabe
Liefert einen Wert vom Typ ResultSet::FieldType zurück, im Fehlerfall wird eine Exception geworfen.
Zu beachten
Gegenwärtig ist diese Methode noch nicht implementiert und liefert daher TYPE_STRING zurück, sofern das Feld vorhanden ist.
ppl7::db::ResultSet::fieldType ( const String fieldname)
pure virtual

Mit dieser Funktion kann man abfragen, was für ein Datentyp das Feld mit dem Namen fieldname ist.

Parameter
[in]fieldnameDie gewünschte Spalte
Rückgabe
Liefert einen Wert vom Typ ResultSet::FieldType zurück, im Fehlerfall wird eine Exception geworfen.
Zu beachten
Gegenwärtig ist diese Methode noch nicht implementiert und liefert daher TYPE_STRING zurück, sofern das Feld vorhanden ist.
ppl7::db::ResultSet::getString ( const String fieldname)
pure virtual
Beschreibung:
Mit dieser Funktion wird der Wert des Feldes mit dem Namen fieldname aus der aktuellem Ergebniszeile als String zurückgegeben.
Parameter
[in]fieldnameDer Name des auszulesenden Feldes
Rückgabe
Ist das Feld vorhanden, wird der Wert des Feldes als String zurückgegeben. Andernfalls wird eine Exception geworfen.
Ausnahmebehandlung
FieldNotInResultSetExceptionWird geworfen, wenn das Feld nicht im Resultset vorhanden ist.
ppl7::db::ResultSet::getString ( int  field)
pure virtual
Beschreibung:
Mit dieser Funktion wird der Wert des Feldes in Spalte field aus der aktuellem Ergebniszeile als String zurückgegeben.
Parameter
[in]fieldDer Nummer der auszulesenden Spalte
Rückgabe
Ist das Feld vorhanden, wird der Wert des Feldes als String zurückgegeben. Andernfalls wird eine Exception geworfen.
Ausnahmebehandlung
FieldNotInResultSetExceptionWird geworfen, wenn das Feld nicht im Resultset vorhanden ist.
ppl7::db::ResultSet::nextRow ( )
pure virtual

Durch Aufruf dieser Funktion wird die nächste Zeile innerhalb des ResultSets geladen.

Zu beachten
Bei Verwendung der Methoden ResultSet::fetchArray oder ResultSet::fetchFields wird automatisch die nächste Zeile geladen.

Die Dokumentation für diese Klasse wurde erzeugt aufgrund der Dateien: